Pregunta

Estoy tratando de exportar una tabla de PostgreSQL con títulos a un archivo CSV a través de línea de comandos, sin embargo lo reciba para exportar a un archivo CSV, pero sin títulos.

Mi código es el siguiente:

COPY products_273 to '/tmp/products_199.csv' delimiters',';
¿Fue útil?

Solución

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

como se describe en la manual de .

Otros consejos

Desde la línea de comandos psql:

\COPY my_table TO 'filename' CSV HEADER

no punto y coma al final.

en lugar de sólo nombre de la tabla, también puede escribir una consulta para obtener los datos de las columnas seleccionadas.

COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;

con privilegios de administrador

\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;

Cuando no tengo permiso para escribir un archivo a partir de Postgres Me parece que puedo ejecutar la consulta desde la línea de comandos.

psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv

Esto funciona

psql dbname -F , --no-align -c "SELECT * FROM TABLE"

En la versión 9.5 que uso, que sería como esto:

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

Esta solución funcionó para mí usando \copy.

psql -h <host> -U <user> -d <dbname> -c "\copy <table_name> FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"

He aquí cómo lo tengo trabajando cáscara de potencia utilizando Connnect PGsl a una base de datos Heroku PG:

he tenido que cambiar primero la codificación UTF-8 cliente para de esta manera: \encoding UTF8

A continuación, los datos arrojados a un archivo CSV esto:

\copy (SELECT * FROM my_table) TO  C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'

He utilizado ~ como delimitador porque no me gusta archivos CSV, que suelen utilizar los archivos TSV, pero no me deja añadir '\ t' como delimitador, por lo que utiliza ~ porque es un characeter rara vez se utiliza.

copia (AnySQL datawanttoexport consulta) a 'fileablsoutepathwihname' delimitador '' cabecera csv;

El uso de este u puede exportar datos también.

Estoy publicar esta respuesta porque ninguna de las otras respuestas que se dan aquí no funcionaba para mí. No podía utilizar COPY Postgres desde dentro, porque no tiene los permisos correctos. Así que elegí "filas de la rejilla de exportación" y se guarda la salida como UTF-8.

La versión dada por psql @ Brian también no funcionaba para mí, por una razón diferente. La razón por la que no funcionó es que al parecer el símbolo del sistema de Windows (que estaba usando Windows) se envolverá alrededor con la codificación por su cuenta. No dejaba de conseguir este error:

  

ERROR: carácter con secuencia de byte 0x81 en la codificación "WIN1252" no tiene equivalente en la codificación de "UTF8"

La solución Terminé usando era escribir un guión corto JDBC (Java), que lee el archivo CSV y las declaraciones de inserción emitidos directamente en mi mesa de Postgres. Esto funcionó, pero el símbolo del sistema también habría funcionado si no hubiera sido alterando la codificación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top