psql命令行字符串中的换行符何时显着?

时间:2016-05-29 12:32:38

标签: postgresql psql

我试图打破一个涉及psql命令字符串(即psql -c)的长命令行,这似乎会导致错误。例如,使用PostgreSQL 9.5和Ubuntu 16.04:

$ psql -c "\\dt"

工作正常,而

$ psql -c "
> \\dt
> "

产生

ERROR:  syntax error at or near "\"
LINE 2: \dt

出于好奇,何时可以将新行(即\n)插入psql命令字符串?

1 个答案:

答案 0 :(得分:1)

  

命令 必须是服务器可完全解析的命令字符串(即,它不包含psql特定的功能)或单个反斜杠命令

https://www.postgresql.org/docs/current/static/app-psql.html

似乎psql无法理解带有前导新行的反斜杠命令。

作为替代方案,您可以使用管道echo命令,该命令也在文档中进行了描述。例如:

$ echo '
> \d
> select 1 as x;' | psql postgres

        List of relations
 Schema | Name  | Type |  Owner   
--------+-------+------+----------
 public | dummy | view | postgres
(1 row)

 x 
---
 1
(1 row)