シェルスクリプトで外部SQLを実行する

SQLと書かれたタイトル SQL

今回やりたいのはこんな感じ

  • シェルスクリプトで外部SQL実行
  • SQL文に変数を使う
  • 変数をクォテーションで囲む

この最後のに苦戦したので、覚え書き。

エラーになるプログラム

・SQL

SELECT SUBSTR(:number, 4) FROM :tablename;

・shell

emp_no="12345678"
psql -f "ファイル名.sql" -v tablename="TABLE_A" -v number=${emp_no}

これを実行すると、「SUBSTR(数値,数値)はありません」みたいなエラーが…

解決策

無理やりですが、この方法で解決しました。

・SQL

SELECT SUBSTR(:number, 4) FROM :tablename;

・shell

emp_no="'12345678'"
psql -f "ファイル名.sql" -v tablename="TABLE_A" -v number=${emp_no}

emp_noをシングルクォーテーション付きの文字列とします。

タイトルとURLをコピーしました