txt tabla rutas relativas postgres permiten para not importar hacia for exportar desde datos archivo allowed postgresql postgresql-copy

rutas - Exportar tabla PostgreSQL a un archivo CSV con encabezados



psql (9)

Cuando no tengo permiso para escribir un archivo desde Postgres, encuentro 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

Estoy intentando exportar una tabla PostgreSQL con encabezados a un archivo CSV a través de la línea de comandos, sin embargo, hago que se exporte a un archivo CSV pero sin encabezados. También necesito esos encabezados. Mi código se ve como sigue

COPY products_273 to ''/tmp/products_199.csv'' delimiters'','';


Desde la línea de comandos psql:

/COPY my_table TO ''filename'' CSV HEADER

No hay punto y coma al final.


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 '','');"


Esto funciona

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


He aquí cómo lo conseguí trabajando shell de poder 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:

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

Utilicé ~ 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 utilicé ~ porque es un característico que rara vez se usa.


Para la versión 9.5 que uso, sería así:

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


copie (anysql query datawanttoexport) a ''fileablsoutepathwihname'' delimitador '','' encabezado csv;

Usando esto puedes exportar datos también.


en lugar de solo el nombre de la tabla, también puede escribir una consulta para obtener solo los datos de la columna seleccionada.

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

con privilegio de administrador

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


COPY products_273 TO ''/tmp/products_199.csv'' DELIMITER '','' CSV HEADER;

como se describe en el manual .