sql - 在 postgres psql 命令中设置包含文件的 search_path
问题描述
如何在 psql 命令中包含多个搜索路径,以便可以使用不同的 search_paths 运行多个文件,但都可以在一个事务中运行?
psql
--single-transaction
--command="set search_path = 'a'; \i /sqlfile/a.sql; set search_path = 'b'; \i /sqlfile/b.sql;"
当我运行它时,我在\i
. 我需要单独包含这些文件并且它们是动态生成的,所以我宁愿使用 a 运行它,而--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
不需要引号,顺便说一句。
推荐阅读
- python - 检查一个df中的字符串是否存在于pandas中的另一个df中
- node.js - Axios - 防止在外部 api 调用上发送 JWT 令牌
- php - 尝试使用 php mail() 和 nginx 从我的服务器使用 laravel 发送邮件后出现错误 504
- javascript - 类型不可分配给类型 | 同时学习打字稿和故事书
- javascript - 向组件 Vue.js 中的 nabar 模态添加一个类
- xml - 将“翻译”和“子字符串”表达式连接在一起
- python - csv评论中的python关键字搜索
- python - 如何打印 Scrapy 发送的请求标头?
- c - 在函数内输入字符串数组
- javascript - 无法在 Google Cloud Functions 中使用 ES 模块