我能够通过ansible playbook执行postgres的简单选择/删除查询。但如果我的查询包含一些单引号,则会失败。如何逃避单一报价?
实施例
运行良好:
command: psql -U dbuser dbname -c 'SELECT count(*) from table;'
我想运行这个:
command: psql -U dbuser dbname -c 'SELECT count(*) from table where time <= '01-sep-2016';'
但这给了我错误。
答案 0 :(得分:3)
不确定它在ansible playbook中会如何运作,但通常有3种方法可以解决这个问题:
在查询周围使用双引号
command: psql -U dbuser dbname -c "SELECT count(*) from table where time <= '01-sep-2016';"
使用反斜杠:
command: psql -U dbuser dbname -c 'SELECT count(*) from table where time <= \'01-sep-2016\';'
连续两次使用引号:
command: psql -U dbuser dbname -c 'SELECT count(*) from table where time <= ''01-sep-2016'';'
答案 1 :(得分:0)
你可以在shell中使用双引号,在SQL中使用单引号:
$ psql -U dbuser dbname -c "SELECT count(*) from table where time <= '01-sep-2016';"
# Here --------------------^-------------------------------------------------------^