シェルスクリプトにSQLを記述してPostgreSQLを操作したい事がありますよね。
本資料では、ヒアドキュメントを使用してSQLを実行してみたいと思います。
以下に記したシェルスクリプトを使用し実行してみます。
#!/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)を流し込みます。
ヒアドキュメントに関しては、上記の関連資料のリンクを参照してください。
上記のスクリプトを起動した出力結果です。
最後に作成したデータベースをドロップしています。
-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