Сохранение вывода psql в файл csv

У меня есть запрос, записанный в файле, расположенном по адресу /path/to/query. Как я могу сохранить результат вывода в файл csv, не используя COPY в запросе? Я попробовал следующую команду, но поля выходного файла разделены знаком «|».

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ','

person Agrim Pathak    schedule 26.05.2015    source источник


Ответы (1)


Это не объясняется в документации, но для работы опции -F требуется опция -A (вывод невыровненной таблицы):

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A

Если вам не нужны заголовки в вашем csv, это означает, что без дополнительных строк вверху и внизу также используйте параметр -t.

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A -t

Из справки:

-A, --no-align режим вывода невыровненной таблицы
-F, --field-separator=STRING установить разделитель полей (по умолчанию: "|")
-t, --tuples-only печатать только строки

person Tom-db    schedule 26.05.2015
comment
Оно работает. Это немного придирчиво, но как мне избавиться от 2 лишних строк: SELECT ‹случайное число› вверху и (rows ‹количество строк›) внизу? - person Agrim Pathak; 26.05.2015
comment
Если вам нужны только кортежи, без других строк внизу и вверху, используйте опцию -t: psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A -t. - person Tom-db; 26.05.2015
comment
Я пробовал это. Я все еще видел SELECT‹случайное число›, хотя количество строк внизу исчезло. - person Agrim Pathak; 26.05.2015
comment
Это следует из запроса. Опубликуйте в своем вопросе содержимое файла с кодом sql. - person Tom-db; 26.05.2015