Как скрыть оформление результирующего набора в выводе Psql - PullRequest
57 голосов
/ 30 марта 2012

Как скрыть имена столбцов и количество строк в выходных данных из psql?

Я запускаю SQL-запрос через psql с:

psql --user=myuser -d mydb --output=result.txt -c "SELECT * FROM mytable;"

и ожидаювыводится как:

1,abc
2,def
3,xyz

но вместо этого я получаю:

id,text
-------
1,abc
2,def
3,xyz
(3 rows)

Конечно, отфильтровать верхние две строки и нижнюю строку после факта не исключено, но там естьспособ сделать это только с PSQL?Читая его справочную страницу, я вижу варианты управления разделителем полей, но ничего для скрытия посторонних выводов.

Ответы [ 2 ]

69 голосов
/ 30 марта 2012

Вы можете использовать опцию -t или --tuples-only:

psql --user=myuser -d mydb --output=result.txt -t -c "SELECT * FROM mytable;"

Отредактировано (более года спустя) добавить:

Вы также можете проверить команду COPY . У меня больше нет экземпляров PostgreSQL, с которыми можно было бы тестировать, но я думаю, что вы можете написать что-то вроде этого:

psql --user=myuser -d mydb -c "COPY mytable TO 'result.txt' DELIMITER ','"

(за исключением того, что result.txt должен быть абсолютным путем). Команда COPY также поддерживает более интеллектуальный формат CSV; см. документацию .

17 голосов
/ 14 марта 2013

Вы также можете перенаправить вывод из psql и использовать ту же опцию. Используйте \ o, чтобы установить выходной файл, и \ t, чтобы выводить только кортежи (или \pset, чтобы отключить только нижний колонтитул ")

\o /home/flynn/queryout.txt
\t on
SELECT * FROM a_table;
\t off
\o

С другой стороны,

\o /home/flynn/queryout.txt
\pset footer off
. . .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...