Postgresql psql传递变量
psql脚本的新功能。Postgresql psql传递变量,postgresql,variables,quoting,psql,Postgresql,Variables,Quoting,Psql,psql脚本的新功能。 我试图将变量传递给psql脚本,但出现错误: psql -v dateav="2012-01-28" mcdb -p 5555 -U admin -q -t -A -c 'select count (client_name) from v_activities where scheduled_start_date like :'dateav';' ERROR: syntax error at or near ":" LINE 1: ...) from v_activi
我试图将变量传递给psql脚本,但出现错误:
psql -v dateav="2012-01-28" mcdb -p 5555 -U admin -q -t -A -c 'select count (client_name) from v_activities where scheduled_start_date like :'dateav';'
ERROR: syntax error at or near ":"
LINE 1: ...) from v_activities where scheduled_start_date like :dateav;
有什么想法吗?的工作原理如下:
echo "select count (client_name) from v_activities \
where scheduled_start_date like :'dateav'" | \
psql -v dateav="2012-01-28" mcdb -p 5555 -U admin -q -t -A
说明:
我引述:
-c命令
(…)命令必须是完全可由服务器解析的命令字符串(即,它不包含特定于psql的特性)
我的。您可以通过在命令中使用管道而不是使用-c
选项来克服此限制
echo 'command' | psql
这种不同的调用稍微贵一点,但这样就可以像预期的那样替换psql变量
后面的反斜杠仅用于行的延续。同一行上不能有任何字符。唯一的目的是更好的格式
对于这种简单的情况,您可以在调用psql之前替换变量:
psql mcdb -p 5555 -U admin -q -t -A \
-c "select count (client_name) from v_activities \
where scheduled_start_date like '2012-01-28'"
我在命令行中使用双引号来获取单引号。您还可以组合和单引号:
-c 'select ... like $x$2012-01-28$x$'
但在实际应用程序中可能还有其他限制