PostgreSQL :: psql で 変数に値を渡す

複雑なSQLをファイルに書いて、psql コマンドから実行することがあります。
その際、SQLファイルに書かれたSQL文にpsqlから変数を渡す方法です。
以下の「sql.txt」はそれなりに複雑なSQLと思って読み替えてください。

sql.txt

 :
 :
select * from table:N where id > 100
 :
 :

”:N” が変数です。(変数名にはコロンを付ける)
この場合、変数 :N には 1 から 99 の値が渡ってくる想定です。
(table1 ~ table99 までループして処理を行う想定)


psql の -v オプションで変数を渡します。

% for N in `seq 1 99`
for> psql -U hoge some_db -f sql.txt -v N=$N