在postgresql中,我psql
使用了-v
可以在sql文件中调用的for变量输入。
例如,从bash脚本来看,它看起来像这样:
"$PSQL_HOME"/psql -h $HOST_NM \
-p $PORT \
-U postgres \
-v v1=$1 \
-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=$1 \
-v v2=$_load \
-f Test.sql
然后在sql文件中,将其更改为:
GRANT ALL ON TABLE mytable TO mra_dev_:v2;
现在可以使用了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句