我在bash脚本中尝试以下语句:
su -c "psql -d myDB-c 'SELECT count(*) AS number, date_trunc('day'::text, users.registerdate) AS registerdate FROM users;'" postgres
问题是'day'
参数需要引用,但在引号内它不起作用。
答案 0 :(得分:1)
您似乎试图将单引号括在单引号内,这当然是您无法做到的。 'this'and'that'
解析为'this'
,然后是and
,后跟'that'
,而不是引用的字符串this'and'that
。
通常的解决方案是用双引号括起单引号,反之亦然,如果在引用的字符串中替换双引号是可接受的"this'and'that"
或'this"and"that'
;但是在这里,你已经拥有了两者,所以你不能这样做(直截了当)。
假设psql
可以从stdin读取命令,这里的简单解决方法是使用here document。
su -c "psql -d myDB-c <<'____HERE'
SELECT count(*) AS number,
date_trunc('day'::text, users.registerdate) AS registerdate
FROM users;
____HERE" postgres