Chr*_*ris 137 postgresql
我在PostgreSQL服务器上运行脚本:
psql db -f sql.sql
Run Code Online (Sandbox Code Playgroud)
来自bash
或在cron
脚本中.
它一直试图用more
或者对输出进行分页less
.
如何禁用结果分页psql
?
我想做的就是改变数据,我不关心任何输出.
Cra*_*ger 232
要禁用分页但保留输出,请使用:
\pset pager off
Run Code Online (Sandbox Code Playgroud)
要记住此设置,请将其添加到〜/ .psqlrc中.
请参阅psql手册.
在旧版本的Pg上,它只是一个切换,所以 \pset pager
要完全禁止查询输出,请\o /dev/null
在psql
脚本中使用.
要抑制psql
信息输出,请在环境中运行-q
或设置QUIET=1
.
要产生结果并扔掉它们,您可以重定向stdout
到/dev/null
:
psql db -f sql.sql >/dev/null
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令重定向stdout和stderr:
psql db -f sql.sql >&/dev/null
Run Code Online (Sandbox Code Playgroud)
但我不建议这样做,因为它会丢弃可能会警告你某些事情不正确的错误信息.你也会产生结果并扔掉它们,这是低效的; 你最好不要通过调整查询来生成它们.
Dav*_*ide 105
我也在寻找这个,我在ServerFault 的类似问题中找到了方法:
psql -P pager=off <other params>
Run Code Online (Sandbox Code Playgroud)
关闭分页事物,而不抑制输出.
Har*_*hof 10
bash,作为一个shell,有两个流,你可以重定向输出数据:stdout和stderr,因为这个输出需要重定向到某个地方,linux有一个特定的'丢弃一切'节点可以通过/ dev/null到达.你寄到那里的一切都会消失在虚空之中.
(shell也有一个输入流,但我会忽略这个,因为你要求抑制输出)
这些流由数字表示:1表示stdout,2表示stderr.
因此,如果你想重定向stdout,你就可以使用<
和>
运算符(基本上指向数据所在的位置)
假设我们要抑制stdout(重定向到/ dev/null):
psql db -f sql.sql > /dev/null
正如您所看到的那样,stdout是默认的,如果您想使用您编写的流编号,则不会使用流编号
psql db -f sql.sql 1> /dev/null
现在,如果你想抑制stderror(流号2),你可以使用
psql db -f sql.sql 2> /dev/null
您还可以将一个流重定向到另一个流,例如stderror到stdout,如果要将所有输出保存到某个地方,常规和错误,这很有用.
psql db -f sql.sql 2>&1 > log.txt
请注意,之间不能有空格 2>&1
最后,有时最有趣的是你可以通过使用来抑制所有输出&>
,因为当你想要它"完全安静"时
psql db -f sql.sql &> /dev/null
小智 7
psql -U user -P pager=off -d database -c 'SQL';
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
59292 次 |
最近记录: |