gpt4 book ai didi

postgresql - 如何在 psql 中包含与当前执行脚本相关的文件?

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

我有一个 PostgreSQL 脚本(比如,~/sql/ 中的 MAIN.sql),它有类似

的行
\i components/helper-functions.sql

如果 $PWD 与我的脚本目录 (~/sql/) 相同,则此包含工作正常,但如果不是,它会查找相对于 $ 的包含文件PWD 而不是相对于 MAIN.sql

因此,如果我从 ~/ 调用脚本,它会查找 ~/components/helper-functions.sql 而不是 ~/sql/组件/helper-functions.sql

我认为 9.2 中将包含一个新的 \ir 指令来解决这个问题,但我正在运行 8.3

最佳答案

将目录名称作为 psql 变量传递,并使用它来组装包含文件的绝对路径,例如,

$ cat ./tmp/foo.sql
\echo 'This is foo.'
\set abs_bar_sql :DIR '/bar.sql'
\i :abs_bar_sql

$ cat ./tmp/bar.sql
\echo 'This is bar.'

$ psql -f ./tmp/foo.sql -v DIR=$PWD/tmp
This is foo.
This is bar.

这不是很漂亮,但这就是为什么要添加 \ir 的原因。

关于postgresql - 如何在 psql 中包含与当前执行脚本相关的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7605126/

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