【发布时间】:2015-07-07 16:03:44
【问题描述】:
我正在使用 Oracle 数据库,而你们中的许多人在部署 DDL 语句时遇到同样的问题,因为它们不是声明性的。
我正在寻找一种工具,可以将表结构/序列/约束/索引从一个实例导出为 XML 文件并将其导入另一个实例。此外,我希望导入是智能的,我的意思是如果导入表和现有表之间的区别是在模式中添加了一个新列,则执行“更改表添加列”。如果更改了列类型,则执行“alter table modify”,创建缺失的表/约束/索引等等。
这样我可以以声明的方式对数据库状态进行版本控制,并将此类 XML 存储在版本控制系统中。
现在我不是在寻找查找表的内容,而是在寻找结构。
有什么建议吗?
【问题讨论】:
-
是否有理由需要临时 XML 文件?与 SQL 脚本相反?几乎任何 PL/SQL IDE(TOAD、SQL Developer 等)都能够连接到两个不同的数据库并生成所需的 DDL,通过生成适当的 DDL 语句使一个数据库看起来像另一个数据库。但是,实现原始更改的开发人员通常会将其原始脚本签入源代码控制,而不是对每个更改进行逆向工程,因为这样会更清楚您指定的内容和默认设置的内容。
-
是的,@JustinCave,我们已经尝试过这种技术,但它仍然会导致将 DDL 更改脚本保存到源代码控制中。我想要的是保存状态和一种将实例从一种状态移动到另一种状态的算法,就像我们存储包状态一样。而且我还想将该 XML 包含到我的补丁中,以便在生产实例上进行处理。我真的很想把表作为包来操作。
标签: xml oracle deployment ddl