Como desativar o cabeçalho apenas no psql (postgresql)

17

Estou usando o PostgreSQL 9.1.X

Estou tentando criar psqlscript para imprimir resultados sem um cabeçalho, mas incluindo um rodapé.

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

Do documento acima

\pset tuples_only

desativará o cabeçalho e o rodapé. e

\pset footer off

desativará apenas o rodapé.

Existe uma maneira psqlde desligar o cabeçalho e manter o rodapé?

Eu sei que existem muitas maneiras de contornar esse problema usando o shell / perl / qualquer ferramenta de texto que você gosta, no entanto, estou me perguntando por que existe uma configuração para o rodapé, mas não uma para o cabeçalho?

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
fonte
Você está no Unix? Se assim for, você pode usar a cabeça / cauda / grep / awk / sed / um milhão de outras coisas
Philᵀᴹ

Respostas:

9

Ao executar a psqlpartir do shell, você pode usar a opção -t(imprime apenas tuplas):

$ 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

Em psqluso \tpara desativar o cabeçalho de impressão e a contagem de linhas.

Tombart
fonte
7

Minha solução não é exatamente desligar, mas descartar cabeçalhos.

Você pode tentar a tailsaída da consulta:

\o | tail -n +2

Com \o, você pode redirecionar a saída para um arquivo ou canal, como neste caso. Essa solução também tem sua falha: pelo menos no meu caso, após a execução de SELECT [...], não volto a um prompt a menos que pressione uma tecla. E a primeira linha de saída aparece após um prompt. Se você redirecionar a saída para um arquivo, isso não deve ser um problema.

Esse comportamento pode ser evitado se você definir a PAGERvariável ambiental adequadamente e sempre usar o 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)

Na psqlversão que acompanha o PostgreSQL 9.2, você pode usar o \setenvcomando por conveniência (quero dizer que você não precisa definir uma variável env que também pode afetar outros aplicativos).

dezso
fonte
bom hack, é bom saber a opção pager. mas realmente não há opção para o próprio cabeçalho? Talvez eu deveria verificar mailist do PostgreSQL
skong
@sinbadblue Não. Como você já conferiu, não. Porém, você pode postar uma solicitação de recurso :) Seria um avanço útil.
Dez
5

Você precisa adicionar uma opção de linha de comando psql -P "footer=off". Esta opção mantém os títulos das colunas no resultado.

Karen Muñoz
fonte
Leia a pergunta.
Colin 'Hart