PostgreSQLでヒアドキュメンとpsqlでSQLを実行する方法 †シェルスクリプトにSQLを記述してPostgreSQLを操作したい事がありますよね。 関連資料 †ヒアドキュメントを使用したシェルスクリプトを作成し実行してみる †以下に記したシェルスクリプトを使用し実行してみます。 使用したシェルスクリプト †#!/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 |