我正在尝试使用 Enteprise Architect 将数据库架构从 Sybase 迁移到 Oracle。
流程如下:
- 从 Sybase 导入表,
- 根据需要更改架构(添加、删除、重命名 列,更改数据类型...),
- 将模式导出为 Oracle 的 DDL(创建表、键等 - dump.sql)。
但我发现了 EA 不会“根据平台”更改数据类型的问题。例如,Sybase 使用的是“日期时间”,而我需要 Oracle 的“时间戳”。
有什么方法可以改变整个模型的一种数据类型吗?
是的,可以在生成的 dump.sql 上使用 Ctrl+H 并替换这些数据类型,但我想在EA(我希望在不向后导入的情况下为生成的 Oracle 数据库提供相应的 EA 模式)。
非常感谢!
J.
最佳答案
要进行这样的转换,没有“干净”的方法,因为您要进行大量更改。无论如何,有 2 种方法:
使用 API:在
t_attribute
中查找元素Repository.SQLQuery("SELECT ea_guid FROM t_attribute WHERE stereotype = 'column' AND type='datetime'")
现在使用 XML 结果读取相应的属性并更改类型:
attr = Repository.GetAttributeByGUID(<theGuid>) attr.type = 'timestamp' attr.update()
只需使用直接 SQL 和 native 数据库客户端执行上述操作:
UPDATE t_attribute SET type='timestamp' WHERE stereotype = 'column' AND type='datetime'
第一个变体更干净一些,但第二个变体并没有那么不安全。在投入生产之前,先尝试在您的存储库的副本上。
关于export - 企业架构师——改变整个模型中的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39833509/