Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL禁用更多输出_Postgresql - Fatal编程技术网

PostgreSQL禁用更多输出

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

我正在PostgreSQL server上运行脚本:

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';