バッチからSQLを実行し、かつSQLにパラメータも渡す方法

データベース

Windowsのバッチファイルを作って、そのバッチファイルからSQLを呼び出すことは多々あるかと思います。
今回は、バッチファイルからSQLを呼び出す方法と、SQLにパラメータを渡す方法について紹介していきたいと思います。


環境


  • DB:PostgreSQL9.6

バッチファイル


まずはバッチファイルです。
WindowsのBATファイルとして準備します。


SET HOST=localhost
SET USERID=postgres
SET PORT=17102
SET DBNAME=SAMPLE_DB
SET PARAM=100

psql.exe -h %HOST% -U %USERID% -p %PORT% -d %DBNAME% -f sample.sql PARAM=%PARAM%

SQLファイルに渡すパラメータは、DBのホスト名やユーザIDと同じように「PARAM」というパラメータを準備しています。


SQLファイル


次にSQLファイルです。
テーブル名はすべてサンプルになります。


BATファイルに定義した「PARAM」を使用するSQLを実行することができます。


SELECT
    id,
FROM
    SAMPLE_TABLE
WHERE
    id = :PARAM

SQLに記載するパラメータは、コロン(:)をキーワード前方に付加することで、SQL内で認識することができます。