Estoy tratando de exportar una tabla PostgreSQL con encabezados a un archivo CSV a través de la línea de comandos, sin embargo, consigo exportar a un archivo CSV, pero sin encabezados.
Mi código se ve de la siguiente manera:
COPY products_273 to '/tmp/products_199.csv' delimiters',';
postgresql
csv
export-to-csv
heading
postgresql-copy
Elitmiar
fuente
fuente
Respuestas:
como se describe en el manual .
fuente
COPY
requiere privilegios de administrador. Úselo\COPY
en su lugar si tiene problemas.COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
Desde la línea de comando psql:
sin punto y coma al final.
fuente
COPY
comando requiere acceso de administradorpsql
enfoque, uno puede guardar la salida en cualquier lugar al que tenga acceso. Acabo de utilizar elpsql
enfoque para obtener datos de un servidor remoto en un archivo local. Muy hábil.pg_dump -h remote | pg_restore -h localhost
.psql -c "\COPY (SELECT * FROM mytable) TO STDOUT" > mytable.csv
en lugar de solo el nombre de la tabla, también puede escribir una consulta para obtener solo los datos de columna seleccionados.
con privilegio de administrador
fuente
\COPY ...
). Y al menos en mi versión de psql (9.5.2) no necesitaba especificar 'DELIMITER'; El valor predeterminado era una coma.Cuando no tengo permiso para escribir un archivo desde Postgres, encuentro que puedo ejecutar la consulta desde la línea de comandos.
fuente
Esto funciona
fuente
-F ,
, y lo uso|
como separador. ¡Gracias!COPY
declaración que crea un archivo para ser reutilizadoPara la versión 9.5 que uso, sería así:
fuente
Esta solución funcionó para mí usando
\copy
.fuente
La forma más simple (usando
psql
) parece ser usando--csv
flag:fuente
He aquí cómo lo hice funcionar con Power Shell usando pgsl connnect a una base de datos Heroku PG:
Primero tuve que cambiar la codificación del cliente a utf8 así:
\encoding UTF8
Luego volcó los datos a un archivo CSV esto:
Usé ~ como delimitador porque no me gustan los archivos CSV, por lo general uso archivos TSV, pero no me permite agregar '\ t' como delimitador, así que usé ~ porque es un carácter poco utilizado.
fuente
copie (anysql query datawanttoexport) a 'fileablsoutepathwihname' delimiter ',' csv header;
Usando esto, también puede exportar datos.
fuente
Estoy publicando esta respuesta porque ninguna de las otras respuestas dadas aquí realmente funcionó para mí. No pude usarlo
COPY
desde Postgres, porque no tenía los permisos correctos. Así que elegí "Exportar filas de cuadrícula" y guardé el resultado como UTF-8.La
psql
versión dada por @Brian tampoco funcionó para mí, por una razón diferente. La razón por la que no funcionó es porque aparentemente el símbolo del sistema de Windows (estaba usando Windows) se entrometía con la codificación por sí solo. Seguí recibiendo este error:La solución que terminé usando fue escribir un breve script JDBC (Java) que leía el archivo CSV y emitía declaraciones de inserción directamente en mi tabla de Postgres. Esto funcionó, pero el símbolo del sistema también habría funcionado si no hubiera alterado la codificación.
fuente
Pruebe esto: "COPIAR productos_273 DESDE '\ tmp \ products_199.csv' DELIMITER ',' CSV HEADER"
fuente