【问题标题】:How to use slash commands outside the database?如何在数据库外使用斜杠命令?
【发布时间】:2012-02-08 07:58:01
【问题描述】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      没有“数据库之外的查询”或“未登录数据库”这样的

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

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

      psql -E mydb
      

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

      【讨论】:

        猜你喜欢
        • 2014-03-21
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 2023-02-26
        • 2021-07-17
        • 1970-01-01
        • 1970-01-01
        • 2012-03-12
        相关资源
        最近更新 更多