Desativar pager para saída interativa do psql

36

Mudamos do PostgreSQL 8.3 para 9.0. Talvez seja um novo recurso ou talvez apenas uma alteração na configuração, mas agora quando a saída de comandos (como \d tablename) excede o espaço vertical visível, o psql parece canalizar a saída por algo semelhante a less. Não consegui encontrar uma maneira de desativar esse comportamento. Algum conselho? Obrigado.

PS: Estou rolando o buffer usando o PuTTY, Shift+PgUp/PgDnpara não precisar da paginação do psql. Além disso, quando pressiono qa paginação do psql, sua saída desaparece completamente da tela (assim como após a execução lessno bash), o que está errado do ponto de vista geral dos casos de uso.

Yuri Ushakov
fonte
Se você está aqui no Google, apenas tentando rolar o pager, não é Spacen ou PgDn ou seta para baixo como eu tentei.
Noumenon

Respostas:

35

Existe documentação para isso.

Na seção \ pset do manual psql :

pager

Controla o uso de um programa de pager para consulta e saída de ajuda do psql. Se a variável de ambiente PAGER estiver configurada, a saída será canalizada para o programa especificado. Caso contrário, um padrão dependente da plataforma (como mais) é usado.

Quando a opção pager está desativada, o programa pager não é usado. Quando a opção pager está ativada, o pager é usado quando apropriado, ou seja, quando a saída é para um terminal e não cabe na tela. A opção pager também pode ser definida como always, o que faz com que o pager seja usado para todas as saídas do terminal, independentemente de caber na tela. \ pset pager sem valor ativa e desativa o uso do pager.

Sven
fonte
9
Obrigado. Os olhares solução completa gosto: psql -P pager.
Yuri Ushakov
3
Eu acho que você pode até colocar uma opção no seu arquivo ~ / .psqlrc para evitar ter que entrar sempre.
Sven
Enfim, para passar argumentos para menos?
Snapfractalpop #
3
Eu também encontrei o problema de Yuri. Como descrito acima. Você pode usar \pset pagerno psql para alternar se a saída vai para o pager. No entanto, você deve poder usar um pager e não fazer com que a saída desapareça da tela ao sair. A resposta é usar 'mais' em vez de 'menos' como pager. Você pode fazer isso definindo a variável de ambiente PAGER em seu shell ou adicionando uma variável de ambiente PAGER a um arquivo ~ / .psqlrc.
Michael Rush
4
@ MichaelRush: defina PAGERcomo less -Xe não limpará a tela.
Sven
21

Experimente o switcher:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Lebnik
fonte
3
Também \pset pager [on|off]para resultado constante.
lolesque 16/07/2015
4

Desligue o pager com

\pset pager off
David Jones
fonte
Esta é simplesmente a resposta aceita para mim. Obrigado.
Nam G VU
3

adicione o código abaixo em ~ / .psqlrc para manter o comportamento

\ pset pager off

Vivin Veerali
fonte
0

Para desativar o pager ao usar psqlno shell:

psql -P pager=off ...

Você também pode exportar uma PAGERvariável de ambiente vazia , para não precisar adicionar a opção a cada instrução. Ele permanecerá definido até você fechar seu shell atual.

export PAGER=
psql ...

Por fim, uma solução alternativa que pode ser mais fácil de lembrar: canalize a saída cat, o que desativará o pager padrão

psql ... | cat
mivk
fonte
0

A melhor maneira, em resumo, é definir uma variável de ambiente para o pager, por exemplo

PAGER='less -X' psql

ou para definir uma vez

export PAGER='less -X'

então corra

psql

Brad Parks
fonte