包含脚本中的psql变量

时间:2013-11-07 21:22:03

标签: postgresql scripting psql postgresql-9.3

更新:此特定问题与psql包含的脚本无关。包含的脚本中的变量按预期进行插值。在SQL函数定义中使用$$引号内的psql变量导致实际问题,并且是described in this question

我使用psql变量在相当长的SQL脚本中从命令行设置一些参数(表名,值)。该脚本已经变得太长了,我将它分成几个部分,并使用\ir subscript.sql语法将它们包含在主脚本中。但是,主脚本中的变量不会传递给下标。这很奇怪,因为文档说\i file等同于在键盘上输入文件,即应该保留脚本环境。

有没有一种简单的方法可以将变量传递给psql中包含的脚本?

我正在使用psql版本9.3.1。

1 个答案:

答案 0 :(得分:3)

http://www.postgresql.org/docs/current/static/app-psql.html

处查看--variable=

例如

psql -d somedb -U someuser -f yourscript.sql --variable=Foo=foobar

在您的脚本中,您可以:

UPDATE sometable SET somecol = :Foo;