3

複雑なクエリを実行する psql コマンドを実行しています。クエリが生成するものは何もないため、psql は出力で "(No rows)" を返します。

psql が空の文字列を返すようにする方法はありますか?

すべてのバリエーションで --pset=tuples-only=on と --pset=footer=off と -q を使用してみましたが、うまくいかないようです。

フッター オプションは、psql シェル プロンプトでは機能しますが、スクリプトからは機能しません。

9.1.7 で試しましたが、8.4、9.1、および 9.2 にはこれが必要です。

4

2 に答える 2

2

十分かもしれません:

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

空の文字列を生成します

次のコメントを編集します。上記のコマンドは空の行を生成するため、行末が含まれます。

何も生成しない場合は、-xオプションを削除します。

以下に示すように、とにかくシェルに違いが生じるわけではありません。

-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 に答える