psqlの-cオプションを利用し返却された文字列をシェルスクリプトなどで利用しようとするとき、カラム名の表示を消して、結果のみ取得したい場合がありますよね。
本記事は、psqlコマンドを利用してSQL結果のみ返却する方法を記します。
$ lsb_release -dr Description: CentOS release 5.7 (Final) Release: 5.7
$ postgres --version postgres (PostgreSQL) 8.4.7
以下、psql --helpを実行したときの出力です。
$ psql --help psql は PostgreSQL の会話型ターミナルです。
使用方法: psql [オプション]... [データベース名 [ユーザ名]] <snip> -t, --tuples-only 行のみを表示 <snip>
上記の使用方法を見ると、-t または --tuples-only オプションを利用すればカラム名が表示されなくなります。
実際に -t (--tuples-only) オプション を試しています。
以下の内容のテーブルを使用しました。
$ psql -c 'select * from t1;' foo a | b ---+--- 1 | 1 2 | 2 (2 行)
$ psql -t -c 'select count(*) from t1' foo 2
$ COUNT=`psql -t -c 'select count(*) from t1' foo` $ echo $COUNT 2上記の場合だと、桁あわせの為、不要なスペースや改行も含まれます。削除したい場合は-Aオプションを使用します。
$ psql -t -A -c 'select count(*) from t1' foo 2
$ psql -t -c 'select sum(a), sum(b) from t1' foo 3 | 3カラム名が削除されていますが、区切り文字が|です。
$ psql -t -A -F , -c 'select sum(a), sum(b) from t1' foo 3,3
以上、コマンドラインからSQLを実行し値を取得する方法を記しました。