Jak wyłączyć nagłówek tylko w psql (postgresql)

18

Używam PostgreSQL 9.1.X

Próbuję zbudować psqlskrypt do drukowania wyników bez nagłówka, ale ze stopką.

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

Z powyższego dokumentu

\pset tuples_only

wyłączy zarówno nagłówek, jak i stopkę. i

\pset footer off

wyłączy tylko stopkę.

Czy istnieje sposób psqlna wyłączenie nagłówka i utrzymanie stopki?

Wiem, że istnieje wiele sposobów obejścia tego problemu za pomocą powłoki / perla / dowolnego narzędzia tekstowego, które Ci się podoba, ale zastanawiam się, dlaczego istnieje konfiguracja stopki, ale nie jedna dla nagłówka?

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
źródło
Czy jesteś na Uniksie? Jeśli tak, możesz użyć head / tail / grep / awk / sed / a milion innych rzeczy
Philᵀᴹ

Odpowiedzi:

10

Podczas wykonywania psqlz powłoki możesz użyć opcji -t(drukuje tylko krotki):

$ 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

W psqlużyciu \tmożna wyłączyć drukowanie nagłówka i liczby wierszy.

Tombart
źródło
7

Moje rozwiązanie nie całkiem się wyłącza, ale raczej odrzucam nagłówki.

Możesz spróbować uzyskać tailwynik zapytania:

\o | tail -n +2

Za pomocą \omożesz przekierować dane wyjściowe do pliku lub potoku, jak w tym przypadku. To rozwiązanie ma również swoją wadę: przynajmniej w moim przypadku po wykonaniu SELECT [...]nie wracam do monitu, chyba że nacisnę klawisz. Pierwszy wiersz wyjściowy pojawia się po monicie. Jeśli następnie przekierujesz dane wyjściowe do pliku, nie powinno to stanowić problemu.

Zachowania tego można uniknąć, jeśli odpowiednio ustawisz PAGERzmienną środowiskową i zawsze używasz pagera 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)

W psqlwersji dostarczanej z PostgreSQL 9.2 możesz użyć tego \setenvpolecenia dla wygody (to znaczy, że nie musisz ustawiać zmiennej env, która może wpływać również na inne aplikacje).

dezso
źródło
niezły hack, dobra opcja pager. ale tak naprawdę nie ma opcji dla samego nagłówka? Może powinienem sprawdzić pocztę postgresql
skong
@ sinbadblue Nie. Jak już sprawdziłeś, nie. Możesz opublikować prośbę o dodanie funkcji :) Byłoby to przydatne ulepszenie.
dezso
5

Musisz dodać opcję wiersza polecenia psql -P "footer=off". Ta opcja powoduje zachowanie tytułów kolumn w wyniku.

Karen Muñoz
źródło
Przeczytaj pytanie
Colin 't Hart,