Désactiver le pager pour la sortie interactive de psql

36

Nous sommes passés de PostgreSQL 8.3 à 9.0. C'est peut-être une nouvelle fonctionnalité ou peut-être juste un changement de configuration, mais maintenant, lorsque la sortie des commandes (comme \d tablename) dépasse l'espace vertical visible, psql semble diriger la sortie par quelque chose de similaire à less. Je ne pouvais pas trouver un moyen de désactiver ce comportement. Aucun conseil? Merci.

PS Je fais défiler le tampon en utilisant PuTTY, Shift+PgUp/PgDnje n'ai donc pas besoin de la pagination de psql. De plus, lorsque j'appuie sur qla pagination du psql, sa sortie disparaît complètement de l'écran (comme après une exécution lessen bash), ce qui est faux du point de vue des cas d'utilisation généraux.

Yuri Ouchakov
la source
Si vous venez de Google et que vous essayez simplement de faire défiler le pager, c’est Space- ni n, ni PgDn, ni la flèche vers le bas, comme j’ai essayé.
Noumenon

Réponses:

35

Il y a de la documentation pour ça.

Dans la section \ pset du manuel psql :

téléavertisseur

Contrôle l'utilisation d'un programme de pagination pour la sortie de requête et d'aide psql. Si la variable d'environnement PAGER est définie, la sortie est dirigée vers le programme spécifié. Sinon, une valeur par défaut dépendante de la plate-forme (telle que more) est utilisée.

Lorsque l'option de téléavertisseur est désactivée, le programme de téléavertisseur n'est pas utilisé. Lorsque l'option de téléavertisseur est activée, le téléavertisseur est utilisé le cas échéant, c'est-à-dire lorsque la sortie est destinée à un terminal et ne tient pas à l'écran. L'option de pagination peut également être définie sur Toujours, ce qui fait que le pageur sera utilisé pour toutes les sorties du terminal, qu'il s'adapte à l'écran ou non. \ pset pager sans valeur active ou désactive l’utilisation du pager.

Sven
la source
9
Merci. Les regards de solutions complètes comme: psql -P pager.
Youri Ouchakov
3
Je suppose que vous pouvez même mettre une option dans votre fichier ~ / .psqlrc pour éviter de devoir la saisir à chaque fois.
Sven
Quoi qu'il en soit, passer des arguments à moins?
Snapfractalpop
3
J'ai aussi rencontré le problème de Yuri. Comme décrit ci-dessus. Vous pouvez utiliser \pset pagerdans psql pour déterminer si la sortie est transmise au pageur. Cependant, vous devriez pouvoir utiliser un téléavertisseur et ne pas laisser la sortie disparaître de l'écran lorsque vous quittez. La réponse consiste à utiliser «plus» au lieu de «moins» comme pagette. Vous pouvez le faire en définissant la variable d’environnement PAGER dans votre shell ou en ajoutant une variable d’environnement PAGER à un fichier ~ / .psqlrc.
Michael Rush
4
@MichaelRush: Réglez PAGERsur less -Xet l'écran ne sera pas effacé .
Sven
21

Essayez le sélecteur:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Lebnik
la source
3
Aussi \pset pager [on|off]pour un résultat constant.
lolesque
4

Eteignez le téléavertisseur avec

\pset pager off
David Jones
la source
C'est simplement la réponse acceptée pour moi. Merci.
Nam G VU
3

ajoutez le code ci-dessous dans ~ / .psqlrc pour conserver le comportement

\ pset pager off

Vivin Veerali
la source
0

Pour éteindre le téléavertisseur lors de l'utilisation psqldans le shell:

psql -P pager=off ...

Vous pouvez également exporter une PAGERvariable d'environnement vide . Il n'est donc pas nécessaire d'ajouter l'option à chaque instruction. Il restera en place jusqu'à la fermeture de votre shell actuel.

export PAGER=
psql ...

Enfin, une solution de contournement peut-être plus facile à retenir: acheminer la sortie cat, ce qui désactivera le pager par défaut.

psql ... | cat
mivk
la source
0

En résumé, la meilleure méthode consiste à définir une variable d’environnement pour le pager, par exemple:

PAGER='less -X' psql

ou pour le régler une fois

export PAGER='less -X'

puis courir

psql

Brad Parks
la source