【问题标题】:customize pager in psql在 psql 中自定义寻呼机
【发布时间】:2013-01-06 14:28:32
【问题描述】:

当我在交互模式下使用 PostgreSQL 的命令行工具psql 时,它会将数据列为分页输出。

但是,因为我在终端应用程序中使用 psql,它本身可以处理长输出,所以我宁愿获得整个输出,而不需要使用烦人的 --more-- 行进行分页。

有没有办法自定义psql 中的分页行为?我尝试将周围 shell 环境中的 LESS 设置为 cat,但这没有帮助。

有什么建议吗?

【问题讨论】:

    标签: postgresql command-line psql pager


    【解决方案1】:

    来自fine psql manual

    \pset option [ value ]
    [...]
    pager
    控制寻呼机的使用 用于查询和 psql 帮助输出的程序。如果环境变量 PAGER 被设置,输出通过管道传送到指定的程序。 否则,将使用与平台相关的默认值(例如 more)。

    pager 选项关闭时,不使用寻呼程序。当寻呼机选项打开时,将在适当的时候使用寻呼机

    所以你可以在psql 提示符下这样说:

    psql> \pset pager off
    

    关闭寻呼机。如果您希望它始终适用,您可以将 \pset pager off 添加到您的 ~/.psqlrc 文件中。

    您还可以在psql 提示符下使用\? 来快速了解您可以使用的特殊命令。

    【讨论】:

    • 谢谢。我应该自己在帮助中找到它,但是由于寻呼机,我从未使用过\pset 命令。 ;-)
    • 这样做真是太好了... export PAGER="vim -c 'set nomod nolist syntax=sql' -" 然后使用 psql ...!
    • 对于多年后来到这里的任何人:\pset 区分大小写!!!
    • 一句话说明显然没有办法强制寻呼机值on。它要么关闭,要么“长输出”。在某些情况下(长字段内容,低记录数)无法正常工作>_
    • @RomualdBrunet 也许\x auto 会有所帮助。
    【解决方案2】:

    为了完整起见,我们可能会提到一次性或用作您的脚本之一中的设置...(如“mu”所述,请参阅 psql --help(手册))

    作为脚本中的命令

    psql --pset=pager-off -c "<sqlCommand>" <databaseName>

    从你的命令行

    psql --pset=pager=off <databaseName>

    这仅对单个命令有效,因此在脚本中最有用。

    您可以使用此方法代替在 psql 实用程序中进行临时更改或通过 init 文件 (~/.psqlrc) 进行永久设置。

    【讨论】:

    • 我想知道这里给出的答案是否适用于 psql 的不同版本。这对我不起作用。以下对我有用:psql -P pager=off <other params>,通过stackoverflow.com/a/15621397/320399
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2012-01-15
    相关资源
    最近更新 更多