postgres exportar datos data postgresql file-io postgresql-copy

exportar - PostgreSQL: exporta los datos resultantes de la consulta SQL a Excel/CSV



export table postgres (6)

Necesito exportar los datos resultantes de una consulta en PostgreSQL a Excel / CSV.
Yo uso PostgreSQL 8.2.11 .

SQL error: ERROR: relative path not allowed for COPY to file In statement: COPY (select distinct(m_price) from m_product)TO ''"c:/auto_new.txt"'';


Ejemplo con nombre de archivo de estilo Unix:

COPY (SELECT * FROM tbl) TO ''/var/lib/postgres/myfile1.csv'' format csv;

Lea 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 comentar 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 por defecto, necesita duplicar las barras invertidas, porque / es un carácter especial e interpretado por PostgreSQL. Funciona en cualquier versión. Todo está en el fino manual :

nombre del archivo

El nombre de ruta absoluto del archivo de entrada o salida. Es posible que los usuarios de Windows necesiten usar una cadena E'''' y dobles barras invertidas 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 de terminal predeterminado psql .

También puede usar una GUI como pgadmin y copiar / pegar desde la cuadrícula de resultados a Excel para pequeñas consultas.

Respuesta estrechamente relacionada:

Solución similar para MySQL:


El script correcto para postgres (Ubuntu) es:

COPY (SELECT * FROM tbl) TO ''/var/lib/postgres/myfile1.csv'';


En PostgreSQL 9.4 para crear un archivo CSV con el encabezado en Ubuntu :

COPY (SELECT * FROM tbl) TO ''/home/user/Desktop/result_sql.csv'' WITH CSV HEADER;

Nota: La carpeta debe ser escribible.


Esto funcionó para mí:

COPY (SELECT * FROM table) TO E''C://Program Files (x86)//PostgreSQL//8.4//data//try.csv'';

En mi caso, el problema fue con el permiso de escritura en una carpeta especial (aunque trabajo como administrador), luego de cambiar la ruta a la carpeta de datos original en PostgreSQL tuve éxito.


Si tiene un error como "ERROR: no se pudo abrir el archivo del servidor" / archivo ": Permiso denegado", puede corregirlo:

Me encontré con el mismo problema, y ​​esta es la solución que encontré: crear una nueva carpeta (por ejemplo, tmp) en / home $ cd / home haga que postgres sea el propietario de esa carpeta $ chown -R postgres: postgres tmp copy in tmp the archivos que desea escribir en la base de datos, y asegúrese de que también sean propiedad de postgres. Eso es. Deberías estar en el negocio después de eso.