Wyłącz pager dla interaktywnego wyjścia psql

36

Przeszliśmy z PostgreSQL 8.3 na 9.0. Być może jest to nowa funkcja, a może po prostu zmiana konfiguracji, ale teraz, gdy wyjście z poleceń (jak, \d tablename) przekracza widoczną przestrzeń pionową, psql wydaje się przepuszczać wyjście przez coś podobnego do less. Nie mogłem znaleźć sposobu na wyłączenie tego zachowania. Jakakolwiek rada? Dzięki.

PS Przewijam bufor za pomocą PuTTY, Shift+PgUp/PgDnwięc nie potrzebuję stronicowania psql. Plus, kiedy qwciskam stronicowanie psql, jego dane wyjściowe całkowicie znikają z ekranu (tak jak po uruchomieniu lessw bash), co jest błędne z ogólnego punktu widzenia przypadków użycia.

Jurij Uszakow
źródło
Jeśli jesteś tutaj z Google, tylko próbujesz przewijać pager, to Spacenie jest n ani PgDn, ani strzałka w dół, jak próbowałem.
Noumenon

Odpowiedzi:

35

Jest na to dokumentacja.

Z sekcji \ pset instrukcji psql :

pager

Kontroluje użycie programu stronicującego do wysyłania zapytań i pomocy psql. Jeśli ustawiona jest zmienna środowiskowa PAGER, dane wyjściowe są przesyłane do określonego programu. W przeciwnym razie używana jest wartość domyślna zależna od platformy (np. Więcej).

Gdy opcja pager jest wyłączona, program pager nie jest używany. Gdy opcja pager jest włączona, pager jest używany, gdy jest to właściwe, tj. Gdy wyjście jest na terminalu i nie zmieści się na ekranie. Opcja pager może być również ustawiona na zawsze, co powoduje, że pager jest używany dla wszystkich wyjść terminala, niezależnie od tego, czy mieści się na ekranie. \ pset pager bez wartości włącza i wyłącza korzystanie z pager.

Sven
źródło
9
Dziękuję Ci. Kompletne rozwiązanie wygląda jak: psql -P pager.
Jurij Uszakow
3
Myślę, że możesz nawet wstawić opcję do pliku ~ / .psqlrc, aby uniknąć konieczności wprowadzania tego za każdym razem.
Sven
W każdym razie przekazać argumenty na mniej?
snapfractalpop
3
Natknąłem się również na problem Jurija. Jak opisano powyżej. Możesz użyć \pset pagerw psql do przełączania, czy dane wyjściowe trafiają do pagera. Jednak powinieneś być w stanie korzystać z pagera, a wyjście nie zniknie z ekranu po wyjściu. Odpowiedzią jest użycie „pager” zamiast „mniej” jako pager. Możesz to zrobić, ustawiając zmienną środowiskową PAGER w powłoce lub dodając zmienną środowiskową PAGER do pliku ~ / .psqlrc.
Michael Rush,
4
@MichaelRush: Ustaw PAGERna less -Xi nie spowoduje wyczyszczenia ekranu.
Sven
21

Spróbuj przełącznika:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Łebnik
źródło
3
Również \pset pager [on|off]dla stałego wyniku.
lolesque
4

Wyłącz pager za pomocą

\pset pager off
David Jones
źródło
To po prostu zaakceptowana odpowiedź dla mnie. Dziękuję Ci.
Nam G VU
3

dodaj poniższy kod w ~ / .psqlrc, aby zachować zachowanie

\ pset wyłączony

Vivin Veerali
źródło
0

Aby wyłączyć pager podczas korzystania psqlz powłoki:

psql -P pager=off ...

Możesz także wyeksportować pustą PAGERzmienną środowiskową, więc nie musisz dodawać opcji do każdej instrukcji. Pozostanie ustawiony, dopóki nie zamkniesz bieżącej powłoki.

export PAGER=
psql ...

Wreszcie obejście, które może być łatwiejsze do zapamiętania: przesuń wyjście cat, co spowoduje wyłączenie domyślnego pagera

psql ... | cat
mivk
źródło
0

Najlepszym sposobem podsumowania jest ustawienie zmiennej środowiskowej dla pagera, np

PAGER='less -X' psql

lub ustawić raz

export PAGER='less -X'

następnie uruchomić

psql

Brad Parks
źródło