Як вимкнути заголовок лише у 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вимкнути заголовок і утримати колонтитул?

Я знаю, що існує багато способів вирішити цю проблему, використовуючи оболонку / 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!

Ви на 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для вимкнення заголовка друку та кількості рядків


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, яка може впливати і на інші програми).


хороший хак, добре знати варіант пейджера. але насправді немає можливості для самого заголовка? Можливо, я повинен перевірити пошту postgresql
skong

@sinbadblue Ні. Як ви вже перевірили, ні. Ви можете опублікувати запит на функцію :) Хоча було б корисним досягненням.
dezso

5

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


Прочитайте питання.
Colin 't Hart
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.