Ejemplo con nombre de archivo estilo Unix:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
Lee el manual sobre COPY
(enlace a la versión 8.2).
Tienes que usar una ruta absoluta para el archivo de destino. Asegúrese de incluir comillas dobles en los nombres de los archivos con espacios. Ejemplo para MS Windows:
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
En PostgreSQL 8.2 , con standard_conforming_strings = off
de forma predeterminada, debe duplicar las barras diagonales inversas, porque \
es un carácter especial e interpretado por PostgreSQL. Funciona en cualquier versión. Todo está en el excelente manual:
nombre de archivo
El nombre de ruta absoluto del archivo de entrada o salida. Es posible que los usuarios de Windows necesiten usar una E''
cadenas y barras invertidas dobles utilizadas como separadores de ruta.
O la sintaxis moderna con standard_conforming_strings = on
(predeterminado desde Postgres 9.1):
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
O también puede usar barras diagonales para los nombres de archivo en Windows.
Una alternativa es usar el meta-comando \copy
del cliente terminal predeterminado psql
.
También puede usar una GUI como pgadmin y copiar/pegar desde la cuadrícula de resultados a Excel para consultas pequeñas.
Respuesta estrechamente relacionada:
- Copie los resultados de una vista de PostgreSQL en una base de datos a una tabla en otra
Solución similar para MySQL:
- Exportación de datos MYSQL a Excel/CSV a través de php