簡體   English   中英

使用 postgres psql 命令中的文件包含設置 search_path

[英]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選項的手冊:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM