Вы также можете передать параметры в командной строке 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 добавьте маркер v1 в предложении WHERE или в любом другом месте SQL.Обратите внимание, что токены также можно использовать в открытом операторе SQL, а не только в файле.Сохраните его как test.sql:
SELECT * FROM myTable
WHERE NOT someColumn IN (:v1);
В Windows сохраните весь файл как файл DOS BATch (.bat), сохраните test.sql в том же каталоге и запустите пакетный файл.
Спасибо Дейву Пейджу из EnterpriseDB за оригинальный сценарий с подсказкой.