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
COPYrequiere privilegios de administrador. Úselo\COPYen 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
COPYcomando requiere acceso de administradorpsqlenfoque, uno puede guardar la salida en cualquier lugar al que tenga acceso. Acabo de utilizar elpsqlenfoque 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.csven 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!COPYdeclaració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--csvflag: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 UTF8Luego 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
COPYdesde Postgres, porque no tenía los permisos correctos. Así que elegí "Exportar filas de cuadrícula" y guardé el resultado como UTF-8.La
psqlversió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