合并SQL脚本文件(按顺序)

时间:2012-04-03 08:34:20

标签: sql database database-design

我的所有表,视图,触发器都在不同的文件中(Table1.sql,Table2.sql,View1.sql,...),我需要将所有模型脚本组合起来创建一个allinone.sql脚本(例如,用于部署的可交付成果)。现在我可以使用“type”命令组合所有这些:

type *.sql > allinone.sql (or cat in bash)

但是,由于我具有参照完整性,我需要建立合并文件的顺序。 (否则allinone.sql脚本将通过引用完整性失败)

你知道任何软件或方法吗?

2 个答案:

答案 0 :(得分:3)

在运行脚本之前禁用fkey检查

SET FOREIGN_KEY_CHECKS = 0;

最后,输入

SET FOREIGN_KEY_CHECKS = 1;

启用你的fkey检查

答案 1 :(得分:0)

如果您的SQL实现具有包含文件机制,您可以使用它。对于Postgres的psql终端监视器,可以使用\i filename命令完成此操作:

\i create_database.sql
\i create_tables.sql
\i populate_tables.sql
\i create_indexes.sql
\i create_functions.sql
\i create_triggers.sql
\i revoke_and_grant.sql
\i do_some_checks.sql

这应该全部放入“all_files.sql”脚本,然后由psql a_database <all_files.sql提交。 当然,您必须手动订购脚本以获得所需的执行顺序。