Schalten Sie den Pager für die interaktive Ausgabe von psql aus

35

Wir haben von PostgreSQL 8.3 auf 9.0 umgestellt. Vielleicht ist es eine neue Funktion oder nur eine Konfigurationsänderung, aber wenn die Ausgabe von Befehlen (wie \d tablename) den sichtbaren vertikalen Raum überschreitet, scheint psql die Ausgabe durch etwas Ähnliches zu leiten less. Ich konnte keine Möglichkeit finden, dieses Verhalten auszuschalten. Irgendein Rat? Vielen Dank.

PS Ich scrolle den Puffer mit PuTTYs, Shift+PgUp/PgDndamit ich kein psql-Paging benötige. Wenn ich qauf das Paging des Psql drücke , verschwindet dessen Ausgabe vollständig vom Bildschirm (genau wie nach dem Ausführen lessvon Bash), was aus der Sicht der allgemeinen Anwendungsfälle falsch ist.

Yuri Ushakov
quelle
Wenn Sie hier von Google sind und nur versuchen, durch den Pager zu scrollen, ist es Space- nicht n oder PgDn oder Pfeil nach unten, wie ich es versucht habe.
Noumenon

Antworten:

35

Dafür gibt es Dokumentation.

Aus dem \ pset-Abschnitt des psql-Handbuchs :

Pager

Steuert die Verwendung eines Pager-Programms für die Ausgabe von Abfragen und Psql-Hilfe. Wenn die Umgebungsvariable PAGER gesetzt ist, wird die Ausgabe an das angegebene Programm weitergeleitet. Andernfalls wird ein plattformabhängiger Standardwert (z. B. more) verwendet.

Wenn die Pager-Option deaktiviert ist, wird das Pager-Programm nicht verwendet. Wenn die Pager-Option aktiviert ist, wird der Pager bei Bedarf verwendet, dh wenn die Ausgabe an ein Terminal erfolgt und nicht auf den Bildschirm passt. Die Pager-Option kann auch auf immer eingestellt werden, wodurch der Pager für alle Terminal-Ausgaben verwendet wird, unabhängig davon, ob er auf den Bildschirm passt. \ pset Pager ohne Wert schaltet die Pager-Verwendung ein und aus.

Sven
quelle
9
Vielen Dank. Die Komplettlösung wie folgt aussieht: psql -P pager.
Yuri Ushakov
3
Sie können sogar eine Option in Ihre ~ / .psqlrc-Datei einfügen, um zu vermeiden, dass Sie dies jedes Mal eingeben müssen.
Sven
Wie auch immer, um Argumente an weniger weiterzugeben?
Snapfractalpop
3
Ich bin auch auf Yuris Problem gestoßen. Wie oben beschrieben. Sie können \pset pagerin psql umschalten, ob die Ausgabe an den Pager geht. Sie sollten jedoch einen Pager verwenden können und die Ausgabe beim Beenden nicht vom Bildschirm verschwinden lassen. Die Antwort ist, als Pager "mehr" statt "weniger" zu verwenden. Sie können dies entweder tun, indem Sie die Umgebungsvariable PAGER in Ihrer Shell festlegen oder indem Sie einer ~ / .psqlrc-Datei eine PAGER-Umgebungsvariable hinzufügen.
Michael Rush
4
@MichaelRush: Set PAGERauf less -Xund es wird der Bildschirm nicht löschen.
Sven
21

Switcher ausprobieren:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Lebnik
quelle
3
Auch \pset pager [on|off]für konstantes Ergebnis.
Lolesque
4

Schalten Sie den Pager mit aus

\pset pager off
David Jones
quelle
Dies ist einfach die akzeptierte Antwort für mich. Vielen Dank.
Nam G VU
3

Fügen Sie den folgenden Code in ~ / .psqlrc hinzu, um das Verhalten beizubehalten

\ pPager ausschalten

Vivin Veerali
quelle
0

So schalten Sie den Pager bei Verwendung psqlin der Shell aus:

psql -P pager=off ...

Sie können auch eine leere PAGERUmgebungsvariable exportieren , damit Sie die Option nicht jeder Anweisung hinzufügen müssen. Es bleibt gesetzt, bis Sie Ihre aktuelle Shell schließen.

export PAGER=
psql ...

Abschließend noch eine Problemumgehung, an die Sie sich möglicherweise leichter erinnern können: Leiten Sie die Ausgabe durch cat, wodurch der Standard-Pager deaktiviert wird

psql ... | cat
mivk
quelle