Как отключить заголовок только в psql (postgresql)

18

Я использую PostgreSQL 9.1.X

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

http://www.postgresql.org/docs/9.1/static/app-psql.html

Из документа выше

\pset tuples_only

отключит верхний и нижний колонтитулы. и

\pset footer off

отключит только нижний колонтитул.

Есть ли способ, psqlчтобы отключить заголовок и оставить нижний колонтитул?

Я знаю, что есть много способов обойти эту проблему, используя shell / perl / любой текстовый инструмент, который вам нравится, однако мне интересно, почему есть конфигурация для нижнего колонтитула, но не один для заголовка?

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!
skong
источник
Вы на Unix? Если это так, вы можете использовать head / tail / grep / awk / sed / миллион других вещей
Philᵀᴹ

Ответы:

10

При выполнении psqlиз оболочки вы можете использовать -t(печатает только кортежи) параметр:

$ psql -t -c "SELECT version();"
 PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit

В psqlиспользовании , \tчтобы отключить печать заголовка и строки подсчет.

Tombart
источник
7

Мое решение не совсем отключается, а скорее отбрасывает заголовки.

Вы можете попробовать на tailвывод запроса:

\o | tail -n +2

С помощью \oвы можете перенаправить вывод в файл или канал, как в этом случае. У этого решения также есть свой недостаток: по крайней мере, в моем случае после выполнения SELECT [...]я не получаю обратно, пока не нажму клавишу. И первая строка вывода появляется после приглашения. Если вы затем перенаправите вывод в файл, это не должно быть проблемой.

Этого поведения можно избежать, если вы PAGERправильно установите переменную окружения и всегда используете пейджер psql:

$ export PAGER='tail -n +3'

$ psql -U postgres -d test
psql (9.1.4, server 9.1.5)

test=# \pset pager always
Pager is always used.

test=# select * from a;
  2 | b
  3 | b
(2 rows)

В psqlверсии, которая поставляется с PostgreSQL 9.2, вы можете использовать эту \setenvкоманду для удобства (я имею в виду, что вам не нужно устанавливать переменную env, которая также может влиять на другие приложения).

Dezso
источник
хороший хак, хороший вариант пейджера. а на самом деле нет опции для самого заголовка? Может быть, я должен проверить mailist postgresql
skong
@sinbadblue Нет. Как вы уже проверили, нет. Вы можете опубликовать запрос функции, хотя :) Было бы полезным продвижением.
Дезсо
5

Вам необходимо добавить параметр командной строки psql -P "footer=off". Эта опция сохраняет заголовки столбцов в результате.

Карен Муньос
источник
Прочитайте вопрос.
Colin 't Hart