Экспорт таблицы PostgreSQL в CSV-файл с заголовками

Я пытаюсь экспортировать таблицу PostgreSQL с заголовками в CSV-файл через командную строку, однако я получаю ее для экспорта в CSV-файл, но без заголовков. Мне тоже нужны эти заголовки. Мой код выглядит следующим образом

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

9 ответов


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

как описано в руководство.


из командной строки psql в:

\COPY my_table TO 'filename' CSV HEADER

нет двоеточия в конце.


вместо простого имени таблицы вы также можете написать запрос для получения только выбранных данных столбца.

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

С правами admin

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

когда у меня нет разрешения на запись файла из Postgres, я нахожу, что могу запустить запрос из командной строки.

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

это работает

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

для версии 9.5 я использую, это будет выглядеть так:

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

Heres, как я получил его рабочую оболочку питания, используя pgsl connnect для базы данных Heroku PG:

мне пришлось сначала изменить кодировку клиента на utf8 следующим образом:\encoding UTF8

затем сбросил данные в файл CSV это:

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

я использовал ~ в качестве разделителя, потому что мне не нравятся CSV-файлы, я обычно использую TSV-файлы, но это не позволит мне добавить "\t " в качестве разделителя, поэтому я использовал ~ потому что его редко используют characeter.


копировать (anysql query datawanttoexport) в разделитель "fileablsoutepathwihname", заголовок csv;

с помощью этого u также можно экспортировать данные.


это решение работает для меня, используя \copy.

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