我有一个批处理文件,该文件在PostgreSQL数据库中运行各种psql和ogr2ogr(空间/ GIS)命令。我在两个相同的数据库中运行相同的命令(开发和测试)。我想将PostreSQL连接信息存储在一个变量中,然后调用它来运行我的psql命令。这样,我可以简单地注释掉当前未使用的连接(开发或测试)。
我使用此工作流程的原因是因为我也在同一脚本中运行了ogr2ogr命令,该脚本成功使用了简单的批处理变量。
方案1:手动更新连接。这行得通,但更新乏味
::Run commands in DEV Server/DB
psql U UserName -h 99.99.999.999 -d MyDB -c "some sql command1"
ogr2ogr command 1
psql U UserName -h 99.99.999.999 -d MyDB -c "some sql command2"
psql U UserName -h 99.99.999.999 -d MyDB -c "some sql command3"
::Run commands in TEST Server/DB
psql U UserName -h 88.88.888.888 -d MyDB -c "some sql command1"
ogr2ogr command 1
psql U UserName -h 88.88.888.888 -d MyDB -c "some sql command2"
psql U UserName -h 88.88.888.888 -d MyDB -c "some sql command3"
方案2:我想在1个地方设置数据库连接。然后,我可以运行所有命令并只需注释掉1行并重新运行批处理即可在数据库之间切换。
\SET dbConnect "-U UserName -h 99.99.999.999 -d MyDevDB"
::\SET dbConnect "-U UserName -h 88.88.888.888 -d MyTestDB"
psql dbConnect -c "some sql command1"
ogr2ogr command 1
psql dbConnect -c "some sql command2"
psql dbConnect -c "some sql command3"
我尝试了几个选项,包括-v,set和/ set无济于事。我已经在下面研究了这些情况,但仍在努力。理想情况下,我想在一个文件的一个位置存储和调用变量。
psql passed variable How do I specify a password to psql non-interactively? PostgreSQL Connection URL