2012-04-03 111 views
2

我有我所有的表,视图,触发器在不同的文件(Table1.sql,Table2.sql,View1.sql,...),我需要结合我所有的模型脚本创建一个allinone.sql脚本(例如创建一个可交付的部署)。现在,我可以像这样将所有使用“类型”命令:合并SQL脚本文件(按顺序)

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

但是,正如我有参照完整性,我需要嘱咐的顺序合并文件。 (否则allinone.sql脚本将因参照完整性而失败)

你知道任何软件或方法吗?在最后运行脚本

SET FOREIGN_KEY_CHECKS = 0; 

,类型

SET FOREIGN_KEY_CHECKS = 1; 

,使您的FKEY检查之前

回答

2

禁用FKEY检查

+0

我认为这是一个“好”的解决方案。它的工作原理,但我们不会检查约束。您是否想过在脚本的顶部将一个可交付成果发送给一个外键停用的客户端?我对自己有信心(我的脚本没问题),但是当执行脚本时会希望检查限制。感谢您的回应。 – unairoldan 2012-04-03 09:10:35

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提交。 当然,您必须手动排序脚本才能获得所需的执行顺序。