![](/img/trans.png)
[英]Error: 'no schema has been selected to create in' even though search_path of schema is set
[英]Set search_path with file include in postgres psql command
如何在 psql 命令中包含多個搜索路徑,以便多個文件可以使用不同的 search_paths 運行但都在一個事務中運行?
psql
--single-transaction
--command="set search_path = 'a'; \i /sqlfile/a.sql; set search_path = 'b'; \i /sqlfile/b.sql;"
當我運行它時,我在\\i
處收到語法錯誤。 我需要單獨包含這些文件,並且它們是動態生成的,因此我寧願使用--command
運行它,而不必生成文件並在可能的情況下使用--file
。
command
必須是一個可以被服務器完全解析的命令字符串(即它不包含特定於 psql 的功能),或者是單個反斜杠命令。 因此,您不能在-c
選項中混合使用 SQL 和 psql 元命令。 為此,您可以使用重復的-c
選項或將字符串通過管道傳輸到 psql [...]
大膽強調我的。
嘗試:
psql --single-transaction -c 'set search_path = a' -c '\i /sqlfile/a.sql' -c 'set search_path = b' -c '\i /sqlfile/b.sql'
或者使用here-document :
psql --single-transaction <<EOF
set search_path = a;
\i /sqlfile/a.sql
set search_path = b;
\i /sqlfile/b.sql
EOF
search_path
不需要引號,順便說一句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.