如何在批处理文件中为PostgresSQL / psql连接创建和调用变量?

时间:2018-08-02 15:45:47

标签: postgresql batch-file psql

我有一个批处理文件,该文件在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

0 个答案:

没有答案