我尝试在数据库之外使用查询。也就是说,无需登录数据库 我想得到结果。我找到了选项(-c)。使用该选项,我们可以从数据库外部执行查询:
test:~$ psql -U sat -c "select * from test.details";
它给出了输出。我想将该查询用于crontab条目。所以我试图将输出存储在一个文件中:
test:~$ psql -U sat -c "select * from test.details \g sat";
产生错误:
ERROR: syntax error at or near "\" LINE 1: select * from test.details \g sat
怎么做?
答案 0 :(得分:3)
这不是斜线,而是反斜杠。
反斜杠是PostgreSQL字符串文字中的转义字符,因此您必须将其加倍才能在实际数据中获得单个反斜杠。
如果要将查询结果存储到命令行中的文件中,则必须使用-o
命令行选项,因此查询将变为:
psql -o filename -U sathishkumar -c "select * from hospital_management.patient_details";
答案 1 :(得分:3)
没有这样的东西作为“数据库之外的查询”或“没有登录数据库”。
您正在尝试将 psql 客户端的元命令与SQL命令混合使用,这是完全不可能的。反斜杠元命令由psql客户端解释,SQL查询由数据库服务器解释。
psql中的大多数元命令实际上都被转换为(一系列)SQL查询到数据库服务器。如果在交互模式下使用命令选项-E
启动它,则可以使psql打印它发送到数据库引擎的命令。尝试:
psql -E mydb
然后执行任何反斜杠命令并观察输出。对于你的其他问题,@aleroot已经提出了很好的建议。