複雑な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