使用建议和“试用错误”的组合,我相信我找到了通过批处理文件执行此特定SQL命令的正确语法。
-
尝试“替代”不相等运算符(
!=
)我还是有错误。它们是不同的错误(这让我对太多的参数有些胡说八道),但它仍然无法执行。
-
根据@compo在评论中的建议,我试图将整个
SELECT
双引号而不是单引号的语句。仍然不完全在那里。
-
最后,我删除了以前在数据库名称周围使用的“额外”单引号。查询似乎已正确执行。
最终结果如下:
@Echo OFF
SET PGPASSWORD=PASSWORD
cd /D "C:\PostgreSQL\bin"
psql.exe -h localhost -p 5432 -d postgres -U username -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'betadb' AND pid != pg_backend_pid();"
dropdb.exe -h localhost -p 5432 -U username betadb
psql.exe -h localhost -p 5432 -d postgres -U username < "C:\PostgresSQL\prodserverdump.sql"
我假设,因为我发现的所有示例都使用单引号来包围SQL语句,所以我认为
有
使用。显然,这个假设是错误的。
不管怎样,现在一切似乎都正常了。希望这能帮助其他想要完成类似任务的人。