您也可以在psql命令行或批处理文件中传递参数。前几条语句收集了连接到数据库所需的详细信息。
最后的提示要求输入约束值,该约束值将在WHERE列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提供原始的提示脚本。