3

我正在运行一个执行复杂查询的 psql 命令。查询不会产生任何结果,因此 psql 在输出中返回“(无行)”。

有没有办法让 psql 返回一个空字符串?

我已经尝试在所有变体中使用 --pset=tuples-only=on 和 --pset=footer=off 和 -q ,但它似乎不起作用。

页脚选项在 psql shell 提示符下有效,但在脚本中无效。

在 9.1.7 上试过,8.4、9.1 和 9.2 需要这个。

4

2 回答 2

2

可能已经足够好了:

$ psql -Axt -c 'select 1 where 1=0'

产生一个空字符串

编辑以下评论:上面的命令产生一个空行,因此包括和行尾。

要完全不产生任何内容,请删除该-x选项。

并不是说它会对 shell 产生任何影响,如下所示:

与-x:

r=`psql -Atx -d test -c "select 1 where 1=0"`  
回声 $r | od -c  
0000000 \n  
0000001  

没有-x:

r=`psql -At -d test -c "select 1 where 1=0"`
回声 $r | od -c
0000000 \n
0000001
于 2013-01-17T16:10:10.717 回答
2

有没有办法让 psql 返回一个空字符串?

您可以简单地SELECT ''在第一个查询之后追加。前任。:

psql -Atp5432 mydb -c "SELECT 1 WHERE FALSE; SELECT ''"

替换SELECT 1 WHERE FALSE为不返回行的复杂查询。

于 2013-01-18T01:46:44.780 回答