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.
Varias herramientas GUI como Squirrel, SQL Workbench / J, AnySQL, ExecuteQuery pueden exportar a archivos Excel.
La mayoría de esas herramientas están listadas en el wiki de PostgreSQL:
http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools