PostgreSQL禁用更多的输出
我正在PostgreSQL服务器上运行脚本:
psql db -f sql.sql
从bash
或cron
脚本。
它不断试图less
地分页输出。
如何禁用psql
结果分页?
我想要做的只是改变数据,我不关心任何输出。
要禁用分页但保留输出,请使用:
\pset pager off
要记住这个设置,把它添加到你的〜/ .psqlrc中 。
请参阅psql手册 。
在老版本的Pg上,它只是一个切换,所以\pset pager
要完全禁止查询输出,请在您的psql
脚本中使用\o /dev/null
。
要禁止psql
的信息输出,请在环境中使用-q
或设置QUIET=1
运行。
为了产生结果并将其扔掉,可以使用以下命令将stdout
redirect到/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