在 Postgres 中的单个 SQL 文件中调用多个 Sql 文件

在 Postgres 中的单个 SQL 文件中调用多个 Sql 文件

在 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

在 bshel​​l 中你也可以用一个简单的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

这实际上要好一些,因为您不必输入文件的名称。

相关内容