我正在运行一个执行复杂查询的psql命令。查询没有产生任何结果,因此,psql在输出中返回“(No rows)”。
有没有办法让psql返回一个空字符串?
我尝试在所有变体中使用--pset = tuples-only = on和--pset = footer = off和-q,但它似乎不起作用。
页脚选项在psql shell提示符下有效,但在脚本中不起作用。
试用9.1.7,需要8.4,9.1和9.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
替换为不返回行的复杂查询。