Exportar a tabela PostgreSQL para o ficheiro CSV com os títulos

estou a tentar exportar uma tabela PostgreSQL com títulos para um ficheiro CSV através da linha de comandos, no entanto consigo que seja exportada para o ficheiro CSV, mas sem títulos. Também preciso dessas rubricas. O meu código é o seguinte

COPY products_273 to '/tmp/products_199.csv' delimiters',';
Author: Arturo Herrero, 2009-07-13

9 answers

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

Tal como descrito no manual .

 498
Author: Milen A. Radev, 2014-03-02 22:41:32

Da linha de comandos psql:

\COPY my_table TO 'filename' CSV HEADER

Sem ponto e vírgula no fim.

 172
Author: Laurent Debricon, 2018-07-24 15:41:47

Em vez de apenas o nome da tabela, você também pode escrever uma pesquisa para obter apenas dados de coluna seleccionados.

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

Com privilégio de administração

\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
 88
Author: Dhruvil Thaker, 2015-11-02 16:39:15

Quando Não tenho permissão para escrever um ficheiro a partir do Postgres, descubro que posso executar a consulta a partir da linha 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
 67
Author: Brian, 2016-12-01 17:32:00

Isto funciona

psql dbname -F , --no-align -c "SELECT * FROM TABLE"
 31
Author: jordg, 2012-01-13 06:17:52

Para a versão 9.5 que eu uso, seria assim:

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
 7
Author: maytham-ɯɐɥʇʎɐɯ, 2017-08-13 00:26:04
Heres how I got it working power shell using pgsl connection to a Heroku PG database:

Primeiro tive que mudar a codificação do cliente para utf8 assim: \encoding UTF8

Em seguida, despejou os dados para um arquivo CSV isto:

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

Usei ~ como delimitador porque não gosto de ficheiros CSV, normalmente uso ficheiros TSV, mas não me deixa adicionar '\t' como delimitador, por isso usei ~ porque é um characeter raramente usado.

 3
Author: Horse O'Houlihan, 2016-11-26 19:31:29

Copiar (anysql query datawanttoexport) para 'fileablsoutepathwihname ' delimiter', ' csv header;

A utilização deste u também pode exportar dados.

 0
Author: user3767321, 2016-05-10 06:44:46

Esta solução funcionou para mim 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 ',');"
 0
Author: Atihska, 2018-06-04 15:43:46