从psql中创建一个空输出

时间:2013-01-17 16:04:50

标签: postgresql psql

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

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

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

页脚选项在psql shell提示符下有效,但在脚本中不起作用。

试用9.1.7,需要8.4,9.1和9.2。

2 个答案:

答案 0 :(得分:2)

可能还不错:

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

产生一个空字符串

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

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

无论如何它都不会对shell产生任何影响,如下所示:

使用-x:

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

没有-x:

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

答案 1 :(得分:0)

  

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

您可以在第一次查询后添加SELECT ''。 例:

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

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