PostgreSQL禁用更多输出
我正在PostgreSQL server上运行脚本:PostgreSQL禁用更多输出,postgresql,Postgresql,我正在PostgreSQL server上运行脚本: psql db -f sql.sql 从bash或在cron脚本中 它不断尝试使用更多或更少对输出进行分页 如何在psql中禁用结果分页 我所要做的就是更改数据,我不关心任何输出。bash,作为一个,有2个输出数据可以重定向:stdout和stderr,因为这个输出需要重定向到某个地方,linux有一个特定的“放弃一切”节点,可以通过它访问。你发送到那里的所有东西都会消失在空虚中 psql db -f sql.sql > /dev/n
psql db -f sql.sql
从bash
或在cron
脚本中
它不断尝试使用更多
或更少
对输出进行分页
如何在psql
中禁用结果分页
我所要做的就是更改数据,我不关心任何输出。bash,作为一个,有2个输出数据可以重定向:stdout和stderr,因为这个输出需要重定向到某个地方,linux有一个特定的“放弃一切”节点,可以通过它访问。你发送到那里的所有东西都会消失在空虚中
psql db -f sql.sql > /dev/null
(Shell也有一个输入流,但我在这里忽略它,因为您要求抑制输出)
这些流由数字表示:1表示标准输出,2表示标准输出
因此,如果只想重定向stdout,可以使用
操作符(基本上,它指向的地方就是数据流向的地方)
假设我们想要抑制标准输出(重定向到/dev/null):
psqldb-f sql.sql>/dev/null
正如您所看到的,这是默认的标准输出,没有使用流编号
如果您想使用流编号,您可以编写
psqldb-f sql.sql 1>/dev/null
现在,如果要抑制stderror(流编号2),可以使用
psqldb-fsql.sql2>/dev/null
您还可以将一个流重定向到另一个流,例如将stderror重定向到stdout,如果您希望将所有输出(常规和错误)保存在某个位置,这非常有用
psqldb-fsql.sql2>&1>log.txt
请注意,2>和1
最后,有时也是最有趣的一点是,您可以通过使用&>
来抑制所有输出,因为当您希望它“完全安静”时
psql db-f sql.sql&>/dev/null
要禁用分页但保留输出,请使用:
\pset pager off
要记住此设置,请将其添加到您的
看
在老版本的Pg上,它只是一个开关,所以\pset pager
要完全抑制查询输出,请在psql
脚本中使用\o/dev/null
要抑制psql
的信息输出,请在环境中使用-q
运行它或设置QUIET=1
要生成结果并将其丢弃,您可以使用以下命令将stdout重定向到
/dev/null
:
psql db -f sql.sql >/dev/null
您可以使用以下命令重定向stdout和stderr:
psql db -f sql.sql >&/dev/null
但我不建议这样做,因为它会扔掉错误信息,这些信息可能会警告您某些地方出了问题。你也在产生结果并把它们扔掉,这是低效的;您最好首先不要通过调整查询来生成它们。我也在寻找这个问题,我在服务器故障中找到了解决方法:
psql -P pager=off <other params>
psql-P寻呼机=关闭
关闭分页功能,而不抑制输出。这里是另一个选项。它的优点是您不必记住psql选项名称等
psql ... | cat
这会阻止它使用寻呼机,但不会停止输出,不是吗?我猜您需要
PAGER=“/dev/null”psql db-P PAGER=always-f sql.sql
使其始终终止输出。虽然此信息在原则上是合理的,但在这种特定情况下根本不起作用,因为psql不向stderr发送信息性消息。它们与stdout上的数据混在一起。突然我意识到你的观点是,OP可以使用最后的“&>”案例来停止寻呼机,方法是抑制所有输出。如果你以任何方式修改你的答案,我将取消我的反对票。这个答案比手册中关于-P的任何内容都更有帮助。谢谢这正是我需要的。谢谢:)绝对保护+1通常,最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以阅读
psql -U user -P pager=off -d database -c 'SQL';