关闭 psql 交互式输出的分页器

关闭 psql 交互式输出的分页器

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

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

答案1

总结:

\pset pager 0

来自psql 手册

寻呼机

控制分页程序在查询和 psql 帮助输出中的使用。如果设置了环境变量 PAGER,则输出将通过管道传输到指定程序。否则将使用与平台相关的默认值(例如 more)。

当 pager 选项关闭时,不使用分页程序。当 pager 选项打开时,分页器在适当的时候使用,即当输出到终端并且不适合屏幕时。pager 选项也可以设置为 always,这会导致分页器用于所有终端输出,而不管它是否适合屏幕。不带值的 \pset pager 切换分页器的使用。

答案2

psql在 shell 中使用时关闭分页器:

psql -P pager=off ...

您还可以导出一个空的PAGER环境变量,这样就不需要在每个语句中添加选项了。它会一直保持设置,直到您关闭当前 shell。

export PAGER=
psql ...

最后,一个可能更容易记住的解决方法:通过管道输出cat,这将禁用默认分页器

psql ... | cat

答案3

尝试切换器:

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

答案4

使用以下方式关闭寻呼机

\pset pager off

相关内容