2016-05-29 65 views
1

我試圖打破涉及psql命令字符串(即psql -c)的長命令行,這似乎會導致錯誤。例如,在PostgreSQL 9.5和Ubuntu 16.04:什麼時候psql命令行字符串中的換行符有意義?

$ psql -c "\\dt" 

正常工作,而

$ psql -c " 
> \\dt 
> " 

產生:

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

只是出於好奇,當是確定以插入新行(即\n)轉換爲psql命令字符串?

回答

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) 
相關問題