Экспорт таблицы 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;
как описано в руководство.
вместо простого имени таблицы вы также можете написать запрос для получения только выбранных данных столбца.
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
для версии 9.5 я использую, это будет выглядеть так:
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
Heres как я получил его работает Power shell с помощью 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' в качестве разделителя, поэтому я использовал ~ потому что его редко используется характер.