#navi(../)
* PostgreSQLでファイル内のSQLと実行結果を一緒に出力する方法 [#c49e63e3]
アプリケーション作成時のテスト工程などでテスト用のSQLファイルを実行した場合、psqlを使うと結果のみが出力されます。~
psqlの-aオプションを使用することにより、ファイル内のSQLと実行結果を一緒に出力することができます。~
以下にpsqlの''-a''オプションを使用した例を記します。

#contents
#htmlinsertpcsp(db-top.html,db-sp.html)

* 使用した環境 [#d0f6c2fe]
- Linux
 $ lsb_release -dr
 Description:    CentOS release 6.3 (Final)
 Release:        6.3
- PostgreSQL
 $ postgres --version
 postgres (PostgreSQL) 8.4.13

* psqlで-aオプションの有無を試してみる [#ved22343]
以下にpsqlコマンドの-aオプションを未使用の場合と使用した場合の結果を記します。~
実行するにあたり、以下のように端末からデータベースを作成しました。
 createdb testdb
また使用したSQLファイルは以下の通りです。
#ref(test.sql)
 drop table if exists tbl1;
 
 create table tbl1 (
 col1 serial,
 col2 varchar
 );
 
 insert into tbl1 (col2) values
 ('sakura'),
 ('tsubaki'),
 ('ajisai');
 
 select * from tbl1;

* psqlの-aオプションなしで実行してみる [#g8a2f1fd]
psqlの-aオプションなしで実行した結果です。~
test.sqlに記述されているSQLが実行され実行結果のみ表示されています。
 $ createdb testdb
 $ psql -f test.sql testdb
 psql:test.sql:1: NOTICE:  テーブル"tbl1"は存在しません。省略します
 DROP TABLE
 psql:test.sql:6: NOTICE:  CREATE TABLEはシリアル列"tbl1.col1"用に暗黙的なシーケ ンス"tbl1_col1_seq"を作成します。
 CREATE TABLE
 INSERT 0 3
  col1 |  col2
 ------+---------
     1 | sakura
     2 | tsubaki
     3 | ajisai
 (3 行)

* psqlの-aオプションありで実行してみる [#k71d99f0]
psqlの-aオプションありで実行した結果です。~
test.sqlに記述されているSQLと実行結果の両方が表示されています。
 $ psql -a -f test.sql testdb
 drop table if exists tbl1;
 DROP TABLE
 create table tbl1 (
 col1 serial,
 col2 varchar
 );
 psql:test.sql:6: NOTICE:  CREATE TABLEはシリアル列"tbl1.col1"用に暗黙的なシーケ ンス"tbl1_col1_seq"を作成します。
 CREATE TABLE
 insert into tbl1 (col2) values
 ('sakura'),
 ('tsubaki'),
 ('ajisai');
 INSERT 0 3
 select * from tbl1;
  col1 |  col2
 ------+---------
     1 | sakura
     2 | tsubaki
     3 | ajisai
 (3 行)

* psqlの入出力オプション [#d7893a70]
参考までにpsqlの入出力オプションは以下のようなものがあります。~
 $ psql --help
 
 <snip>
 
 入出力オプション:
   -a, --echo-all           スクリプトからのすべての入力を表示
   -e, --echo-queries       サーバへ送信したコマンドを表示
   -E, --echo-hidden        内部コマンドが生成したクエリーを表示
   -L, --log-file=ファイル名 セッションログをファイルに吐き出す
   -n, --no-readline        拡張コマンドライン編集機能(readline)を無効にする
   -o, --output=ファイル名  クエリーの結果をファイル(または |パイプ)に送る
   -q, --quiet              静かに実行(メッセージなしで、クエリー出力のみ)
   -s, --single-step        シングルステップモード(各クエリーごとに確認)
   -S, --single-line         単一行モード(行末を SQL コマンドの終了とみなす)

#htmlinsertpcsp(db-btm.html,db-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS