如何在数据库外使用斜杠命令?

时间:2012-02-08 07:58:01

标签: postgresql shell psql

我尝试在数据库之外使用查询。也就是说,无需登录数据库 我想得到结果。我找到了选项(-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

怎么做?

2 个答案:

答案 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已经提出了很好的建议。