关闭用于psql交互式输出的传呼机


35

我们从PostgreSQL 8.3切换到9.0。也许这是一项新功能,或者可能只是配置更改,但是现在当命令(如\d tablename)的输出超出可见的垂直空间时,psql似乎通过类似于的方式传递输出less。我找不到关闭此行为的方法。有什么建议吗?谢谢。

PS我正在使用PuTTY滚动缓冲区,Shift+PgUp/PgDn所以我不需要psql的分页。另外,当我按qpsql的分页时,其输出完全从屏幕上消失(就像less在bash中运行后一样),从一般用例的角度来看这是错误的。


如果您来自Google,只是想滚动浏览该寻呼机,它Space不是-或n或PgDn或我尝试过的向下箭头。
Noumenon

Answers:


35

有文档。

psql手册的\ pset部分中:

传呼机

控制用于查询和psql帮助输出的寻呼机程序的使用。如果设置了环境变量PAGER,则将输出通过管道传递到指定的程序。否则,将使用依赖于平台的默认值(例如更多)。

当寻呼机选项关闭时,将不使用寻呼机程序。如果启用了分页器选项,则在适当的情况下使用分页器,即,当输出到终端且不适合屏幕时。寻呼机选项也可以设置为始终,这将使该寻呼机用于所有终端输出,而不管其是否适合屏幕显示。\ pset传呼机(不带值)可打开和关闭传呼机的使用。


9
谢谢。完整的解决方案如下所示:psql -P pager
Yuri Ushakov

3
我猜您甚至可以在〜/ .psqlrc文件中放置一个选项,以避免每次都输入该选项。
斯文

无论如何要传递更少的参数?
snapfractalpop 2012年

3
我也遇到了尤里的问题。如上所述。您可以\pset pager在psql 中使用来切换是否将输出发送到寻呼机。但是,您应该能够使用寻呼机,并且退出时输出不会从屏幕上消失。答案是使用“更多”而不是“更少”作为寻呼机。您可以通过在外壳程序中设置PAGER环境变量或将PAGER环境变量添加到〜/ .psqlrc文件来实现。
Michael Rush

4
@MichaelRush:设置PAGERless -X不会清除屏幕。
斯文

21

尝试切换器:

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

3
也是\pset pager [on|off]恒定的结果。
lolesque



0

psql在外壳中使用时关闭寻呼机:

psql -P pager=off ...

您还可以导出一个空的PAGER环境变量,因此无需在每个语句中都添加选项。在关闭当前外壳之前,它将保持设置状态。

export PAGER=
psql ...

最后,一种更容易记住的解决方法:通过cat将输出通过管道传输,这将禁用默认的寻呼机

psql ... | cat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.