Отключить пейджер для интерактивного вывода PSQL

36

Мы перешли с PostgreSQL 8.3 на 9.0. Возможно, это новая функция или, возможно, просто изменение конфигурации, но теперь, когда выходные данные команд (например, \d tablename) превышают видимое вертикальное пространство, psql, по-видимому, передает данные через нечто подобное less. Я не мог найти способ отключить это поведение. Любой совет? Спасибо.

PS Я прокручиваю буфер с помощью PuTTY, Shift+PgUp/PgDnпоэтому мне не нужна подкачка psql. Плюс, когда я нажимаю qв psql-пейджинге, его вывод полностью исчезает с экрана (как после запуска lessв bash), что неправильно с точки зрения общих случаев использования.

Юрий Ушаков
источник
Если вы здесь из Google, просто пытаетесь прокрутить пейджер, это Space- не n или PgDn или стрелка вниз, как я пытался.
Нумен

Ответы:

35

Для этого есть документация.

Из раздела \ pset руководства psql :

пейджер

Управляет использованием пейджерной программы для запроса и вывода справки psql. Если установлена ​​переменная среды PAGER, выходные данные передаются в указанную программу. В противном случае используется зависящее от платформы значение по умолчанию (например, more).

Когда опция пейджера отключена, программа пейджера не используется. Когда опция пейджера включена, пейджер используется там, где это необходимо, т. Е. Когда выход выводится на терминал и не помещается на экране. Опция пейджер также может быть установлена ​​на всегда, что заставляет пейджер использоваться для всех выходных данных терминала независимо от того, помещается ли он на экране. \ pset pager без значения включает и выключает пейджер.

Свен
источник
9
Спасибо. Полный внешний вид решения , как: psql -P pager.
Юрий Ушаков
3
Я полагаю, вы можете даже добавить параметр в ваш файл ~ / .psqlrc, чтобы избежать необходимости вводить его каждый раз
Свен
В любом случае, чтобы передать аргументы меньше?
snapfractalpop
3
Я также столкнулся с проблемой Юрия. Как описано выше. Вы можете использовать \pset pagerв psql для переключения, идет ли вывод на пейджер. Тем не менее, вы должны иметь возможность использовать пейджер и не допустить исчезновения вывода с экрана при выходе. Ответ заключается в том, чтобы использовать «больше» вместо «меньше» в качестве пейджера. Вы можете сделать это, установив переменную среды PAGER в своей оболочке или добавив переменную среды PAGER в файл ~ / .psqlrc.
Майкл Раш
4
@MichaelRush: Набор PAGERдля less -Xи он не очистит экран.
Свен
21

Попробуйте переключатель:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Lebnik
источник
3
Также \pset pager [on|off]для постоянного результата.
lolesque
4

Выключите пейджер с помощью

\pset pager off
Дэвид Джонс
источник
Это просто принятый для меня ответ. Спасибо.
Nam G VU
3

добавьте код ниже в ~ / .psqlrc, чтобы сохранить поведение

\ pset выключен пейджер

Вивин Верали
источник
0

Чтобы отключить пейджер при использовании psqlв оболочке:

psql -P pager=off ...

Вы также можете экспортировать пустую PAGERпеременную окружения, поэтому вам не нужно добавлять опцию для каждого оператора. Он останется установленным, пока вы не закроете текущую оболочку.

export PAGER=
psql ...

И, наконец, обходной путь, который может быть легче запомнить: перенаправить вывод cat, что отключит пейджер по умолчанию

psql ... | cat
mivk
источник
0

В итоге лучше всего установить переменную окружения для пейджера, например:

PAGER='less -X' psql

или установить его один раз

export PAGER='less -X'

тогда беги

psql

Брэд Паркс
источник