关闭 psql 交互式输出的寻呼机

Yur*_*kov 63 psql

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

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

Sve*_*ven 58

特尔;博士:

\pset pager 0

psql 手册的 \pset 部分:

寻呼机

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

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

  • 谢谢你。完整的解决方案看起来像:`psql -P pager`。 (11认同)
  • @MichaelRush:将 `PAGER` 设置为 `less -X`,它不会清除屏幕。 (5认同)
  • 我想你甚至可以在你的 ~/.psqlrc 文件中放置一个选项,以避免每次都输入这个。 (3认同)
  • 我也遇到了尤里的问题。如上所述。您可以在 psql 中使用 `\pset pager` 来切换是否输出到寻呼机。但是,您应该能够使用寻呼机,并且在退出时不会让输出从屏幕上消失。答案是使用“更多”而不是“更少”作为寻呼机。您可以通过在 shell 中设置 PAGER 环境变量或将 PAGER 环境变量添加到 ~/.psqlrc 文件来实现。 (3认同)

小智 26

尝试切换器:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Run Code Online (Sandbox Code Playgroud)

  • 还有 `\pset pager [on|off]` 用于恒定结果。 (3认同)

miv*_*ivk 17

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

psql -P pager=off ...
Run Code Online (Sandbox Code Playgroud)

您还可以导出一个空的PAGER环境变量,因此您无需为每个语句添加该选项。它将保持设置,直到您关闭当前的 shell。

export PAGER=
psql ...
Run Code Online (Sandbox Code Playgroud)

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

psql ... | cat
Run Code Online (Sandbox Code Playgroud)


Dav*_*nes 10

关闭寻呼机

\pset pager off
Run Code Online (Sandbox Code Playgroud)


小智 6

在 ~/.psqlrc 中添加以下代码以保留行为

\pset 寻呼机关闭