我们从 PostgreSQL 8.3 切换到 9.0。也许这是新功能,也许只是配置更改,但现在当命令(如)的输出\d tablename
超出可见垂直空间时,psql 似乎会通过类似于的东西来传输输出less
。我找不到关闭此行为的方法。有什么建议吗?谢谢。
PS 我使用 PuTTY 滚动缓冲区,Shift+PgUp/PgDn
因此不需要 psql 的分页。另外,当我按下q
psql 的分页时,其输出会从屏幕上完全消失(就像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