0

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

怎么做?

4

2 回答 2

3

这不是斜杠,而是反斜杠。 反斜杠是 PostgreSQL 字符串文字中的转义字符,因此您必须将其加倍才能在实际数据中添加一个反斜杠。如果要将查询结果从命令行存储到文件中,则必须使用-o命令行选项,因此您的查询将变为:

psql  -o filename -U sathishkumar -c "select * from hospital_management.patient_details";
于 2012-02-08T08:07:41.010 回答
3

没有“数据库之外的查询”或“未登录数据库”之类的东西。

您正在尝试将psql客户端的元命令与 SQL 命令混合,这是绝对不可能的。反斜杠元命令由 psql 客户端解释,SQL 查询由数据库服务器解释。

psql 中的大多数元命令实际上都被转换为(一系列)对数据库服务器的 SQL 查询。-E如果您在交互模式下使用命令选项启动它,您可以让 psql 打印它发送到数据库引擎的命令。尝试:

psql -E mydb

然后执行任何反斜杠命令并观察输出。对于您的其余问题,@aleroot 已经给出了很好的建议。

于 2012-02-08T11:05:21.977 回答