在 postgres 中,如何在一个 sql 文件中调用多个 sql 文件
例如我有aaa.sql,bbb.sql,ccc.sql。
我想从xxx.sql执行这3个文件。
有人可以建议我怎么做吗?
答案1
如果您正在运行这些文件,psql
您需要\i
指令(“从文件执行命令”)。
xxx.sql:
\i aaa.sql
\i bbb.sql
\i ccc.sql
如果您通过其他程序传递这些文件,则需要自己合并这些文件 - 我不相信存在任何执行外部文件的 SQL 标准方式。
答案2
在 bshell 中你也可以用一个简单的find -exec
find sql/ -name *.sql -exec psql -U user -f {} \;
答案3
这不是您真正想要的,但可以满足您的目的:1) 将所有脚本文件放在一个文件夹中;2) 使用 bash 脚本遍历您的文件并运行 psql。例如:
SCRIPTS_DIR=/home/myproject/scripts
DATABASE_NAME=database_name
for file in $SCRIPTS_DIR/*.sql
do sudo -u postgres psql $DATABASE_NAME -f $file
done
这实际上要好一些,因为您不必输入文件的名称。