また、psqlコマンドラインで、またはバッチファイルからパラメーターを渡すこともできます。最初のステートメントは、データベースに接続するために必要な詳細を収集します。
最後のプロンプトは制約値を要求します。これはWHERE column IN()句で使用されます。文字列の場合は単一引用符で囲み、コンマで区切ることを忘れないでください。
@echo off
echo "Test for Passing Params to PGSQL"
SET server=localhost
SET /P server="Server [%server%]: "
SET database=amedatamodel
SET /P database="Database [%database%]: "
SET port=5432
SET /P port="Port [%port%]: "
SET username=postgres
SET /P username="Username [%username%]: "
SET /P bunos="Enter multiple constraint values for IN clause [%constraints%]: "
ECHO you typed %constraints%
PAUSE
REM pause
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h %server% -U %username% -d %database% -p %port% -e -v v1=%constraints% -f test.sql
次にSQLコードファイルで、WHERE句内、またはSQLの他の任意の場所にv1トークンを追加します。トークンは、ファイルだけでなく、開いているSQLステートメントでも使用できることに注意してください。これをtest.sqlとして保存します。
SELECT * FROM myTable
WHERE NOT someColumn IN (:v1);
Windowsでは、ファイル全体をDOS BATchファイル(.bat)として保存し、test.sqlを同じディレクトリに保存して、バッチファイルを起動します。
EnterpriseDBのDave Page、元のプロンプトスクリプトをありがとう。