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.


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.


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.

3
Também \pset pager [on|off]para resultado constante.
lolesque 16/07/2015


3

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

\ pset pager off


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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.