PostgreSQL禁用更多的输出

我正在PostgreSQL服务器上运行脚本:

psql db -f sql.sql 

bashcron脚本。

它不断试图less地分页输出。

如何禁用psql结果分页?

我想要做的只是改变数据,我不关心任何输出。

要禁用分页但保留输出,请使用:

 \pset pager off 

要记住这个设置,把它添加到你的〜/ .psqlrc中 。

请参阅psql手册 。

在老版本的Pg上,它只是一个切换,所以\pset pager

要完全禁止查询输出,请在您的psql脚本中使用\o /dev/null

要禁止psql的信息输出,请在环境中使用-q或设置QUIET=1运行。


为了产生结果并将其扔掉,可以使用以下命令将stdoutredirect到/dev/null

 psql db -f sql.sql >/dev/null 

您可以使用以下命令redirectstdout和stderr:

 psql db -f sql.sql >&/dev/null 

但我不build议这样做,因为它会丢掉错误信息,可能会警告您某些事情不正确。 你也在产生结果并把它扔掉,效率不高。 你最好不要通过调整你的查询来制作它们。

我也在寻找这个,我在ServerFault上find了类似的问题 :

 psql -P pager=off <other params> 

closures分页的事情,不压制输出。

bash,作为一个shell ,有2个stream可以redirect输出数据:stdout和stderr,因为这个输出需要redirect到某处,linux有一个特定的“丢弃所有”节点,通过/ dev / null可到达。 你发送的所有东西都将消失在虚空中。

(shell也有一个inputstream,但我会忽略这里,因为你要求抑制输出)

这些stream由数字表示:1表示标准输出,2表示标准错误。

所以如果你想redirect标准输出,你可以使用<>操作符(基本上指向的是数据stream向的地方)

假设我们想要抑制stdout(redirect到/ dev / null):

psql db -f sql.sql > /dev/null

正如你可以看到这是标准输出是默认的,如果你想使用你写的stream号码没有使用stream号码

psql db -f sql.sql 1> /dev/null

现在,如果你想抑制stderror(stream号码2),你会使用

psql db -f sql.sql 2> /dev/null

你也可以redirect一个stream到另一个,例如stderror到stdout,如果你想保存所有的输出到某个地方,常规和错误,这很有用。

psql db -f sql.sql 2>&1 > log.txt

请注意, 2>&1之间不能有空格

最后,有时候最有趣的事实是,你可以用&>来抑制所有的输出,因为当你想让它“完全安静”

psql db -f sql.sql &> /dev/null

 psql db -f sql.sql > /dev/null 

这是另一种select。 它的优点是你不必记住psql的选项名称等

 psql ... | cat