postgres psql 尝试在 sql 脚本中传递参数时出错
postgres psql error trying to pass parameters in sql script
在 postgresql 中,我 psql
使用 -v
变量输入,我可以在 sql 文件中调用它。
例如 bash 脚本,它看起来像这样:
"$PSQL_HOME"/psql -h $HOST_NM \
-p $PORT \
-U postgres \
-v v1= \
-f Test.sql
...
..
从 sql 文件中,它看起来像这样:
GRANT ALL ON TABLE mytable TO mra_dev_:v1;
GRANT ALL ON TABLE mytable TO mra_dev_:v1_load;
第一个语句有效,但第二个语句失败:
psql:Test.sql:472: ERROR: syntax error at or near ":"
LINE 1: GRANT ALL ON TABLE mytable TO mra_dev_:v1_load
^
我该如何解决这个问题?我可以为此使用某种转义或连接功能吗?
我的解决方法是在命令行上调用时将我需要的字符串添加到参数中,如下所示:
"$PSQL_HOME"/psql -h $HOST_NM \
-p $PORT \
-U postgres \
-v v1= \
-v v2=$_load \
-f Test.sql
然后在 sql 文件中,更改为:
GRANT ALL ON TABLE mytable TO mra_dev_:v2;
现在有效。
在 postgresql 中,我 psql
使用 -v
变量输入,我可以在 sql 文件中调用它。
例如 bash 脚本,它看起来像这样:
"$PSQL_HOME"/psql -h $HOST_NM \
-p $PORT \
-U postgres \
-v v1= \
-f Test.sql
...
..
从 sql 文件中,它看起来像这样:
GRANT ALL ON TABLE mytable TO mra_dev_:v1;
GRANT ALL ON TABLE mytable TO mra_dev_:v1_load;
第一个语句有效,但第二个语句失败:
psql:Test.sql:472: ERROR: syntax error at or near ":"
LINE 1: GRANT ALL ON TABLE mytable TO mra_dev_:v1_load
^
我该如何解决这个问题?我可以为此使用某种转义或连接功能吗?
我的解决方法是在命令行上调用时将我需要的字符串添加到参数中,如下所示:
"$PSQL_HOME"/psql -h $HOST_NM \
-p $PORT \
-U postgres \
-v v1= \
-v v2=$_load \
-f Test.sql
然后在 sql 文件中,更改为:
GRANT ALL ON TABLE mytable TO mra_dev_:v2;
现在有效。