#navi(../)
* PostgreSQLでヒアドキュメンとpsqlでSQLを実行する方法 [#a5f6e2f0]
シェルスクリプトにSQLを記述してPostgreSQLを操作したい事がありますよね。~
本資料では、ヒアドキュメントを使用してSQLを実行してみたいと思います。

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

* 関連資料 [#b13d2281]
-[[コマンドラインからSQLを実行する方法>PostgreSQL/コマンドラインからSQLを実行する方法]]
-[[PostgreSQLでファイル内のSQLと実行結果を一緒に出力する方法>PostgreSQL/ファイル内のSQLと実行結果を一緒に出力する方法]]
-[[ヒアドキュメント内の変数を展開しない方法>http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8D%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E5%86%85%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%B1%95%E9%96%8B%E3%81%97%E3%81%AA%E3%81%84%E6%96%B9%E6%B3%95.html]]
-[[ヒアドキュメントをファイルに出力する方法>http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8D%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html]]

* ヒアドキュメントを使用したシェルスクリプトを作成し実行してみる [#ca194afe]
以下に記したシェルスクリプトを使用し実行してみます。

** 使用したシェルスクリプト [#cda7844b]
#ref(sql.sh)
 #!/bin/bash
 
 psql <<_EOT
 SELECT version();
 CREATE DATABASE sakura;
 \c sakura
 CREATE TABLE tbl (a INT, b INT);
 INSERT INTO tbl SELECT generate_series(1,100), generate_series(101,200);
  SELECT COUNT(*) FROM tbl;
 SELECT AVG(a), AVG(b) FROM tbl;
 DROP TABLE tbl;
 _EOT

上記のシェルスクリプトはpsqlコマンドに対し、_EOTから_EOTまでの文字列(SQL)を流し込みます。~
ヒアドキュメントに関しては、上記の関連資料のリンクを参照してください。

** 実行結果 [#o00c8999]
上記のスクリプトを起動した出力結果です。~
最後に作成したデータベースをドロップしています。
 -bash-4.1$ chmod +x sql.sh
 -bash-4.1$ ./sql.sh
                                                      version                                                      
 ------------------------------------------------------------------------------------------------------------------
  PostgreSQL 8.4.13 on x86_64-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4), 64-bit
 (1 行)
 
 CREATE DATABASE
 データベース "sakura" に接続しました。.
 CREATE TABLE
 INSERT 0 100
  count 
 -------
    100
 (1 行)
 
          avg         |         avg          
 ---------------------+----------------------
  50.5000000000000000 | 150.5000000000000000
 (1 行)
 
 DROP TABLE
 -bash-4.1$ dropdb sakura

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

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