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

问题描述:

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

如何做到这一点?

这不是斜杠,而是反斜杠。 反斜杠是PostgreSQL字符串文字中的转义字符,因此您必须将其加倍才能将实际数据中的单个反斜杠变为单个反斜杠。 如果你想查询的结果存放到您必须使用-o命令行选项命令行文件,所以您的查询就会变成:

psql -o filename -U sathishkumar -c "select * from hospital_management.patient_details"; 
+0

非常感谢你,这是工作.. – sat 2012-02-08 08:51:12

没有这样的事情作为“在数据库之外查询”或“不登录数据库”。

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

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

psql -E mydb 

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