gpt4 book ai didi

sql - 使用包含在 postgres psql 命令中的文件设置 search_path

转载 作者:行者123 更新时间:2023-11-29 12:16:13 26 4
gpt4 key购买 nike

如何在 psql 命令中包含多个搜索路径,以便可以使用不同的搜索路径运行多个文件,但所有文件都在一个事务中运行?

psql
--single-transaction
--command="set search_path = 'a'; \i /sqlfile/a.sql; set search_path = 'b'; \i /sqlfile/b.sql;"

当我运行它时,我在 \i 处收到语法错误。我需要单独包含文件并且它们是动态生成的,所以我宁愿使用 --command 运行它,也不必生成文件并使用 --file 如果可能的话。

最佳答案

The manual about the --command option:

command must be either a command string that is completely parsable by the server (i.e., it contains no psql-specific features), or a single backslash command. Thus you cannot mix SQL and psql meta-commands within a -c option. To achieve that, you could use repeated -c options or pipe the string into psql [...]

大胆强调我的。

尝试:

psql --single-transaction -c 'set search_path = a' -c '\i /sqlfile/a.sql' -c 'set search_path = b' -c '\i /sqlfile/b.sql'

或者使用这里的文档:

psql --single-transaction <<EOF
set search_path = a;
\i /sqlfile/a.sql
set search_path = b;
\i /sqlfile/b.sql
EOF

顺便说一下,search_path 不需要引号。

关于sql - 使用包含在 postgres psql 命令中的文件设置 search_path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53101980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com