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

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

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

4 ответа

Решение

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

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

пейджер

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

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

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

psql -P pager=off ...

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

export PAGER=
psql ...

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

psql ... | cat

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

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.

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

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

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

\pset pager off

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

PAGER='less -X' psql

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

export PAGER='less -X'

тогда беги

psql

Другие вопросы по тегам