2

我正试图使用​​Enteprise Architect将数据库架构从Sybase迁移到Oracle。企业架构师 - 更改整个模型中的数据类型

过程是以下几点:从Sybase

  • 变化模式作为必要(添加,删除,重命名 列,更改数据类型...)

    • 导入表,
    • 输出模式为DDL(为Oracle创建表,密钥等 - dump.sql)。

    但是我发现EA根据平台不改变数据类型的问题。例如,Sybase使用'datetime',我需要Oracle'时间戳'。

    有没有办法如何改变整个模型的一种数据类型?

    是的,有对生成的dump.sql使用按Ctrl + H^替换这些数据类型的方式,但我想找到一些EA“干净”的方式(我想有相应的EA模式转换为结果Oracle数据库而不向后导入)。

    非常感谢!

    J.

  • 回答

    1

    做这样的转换存在,因为你正在实质性的改变不“干净”的方式。 2个路要走,无论如何:

    1. 使用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() 
      
    2. 只需使用直接SQL和本地DB客户端完成以上操作:

      UPDATE t_attribute SET type='timestamp' WHERE stereotype = 'column' AND type='datetime' 
      

    第一个变体是有点清洁,但第二个不是不安全。在制作之前,先尝试复制一份回购协议。

    +0

    谢谢,我会试试看。 但是如何在EA中直接更改它却没有办法?我在EA中发现了一些数据类型映射,但它不适用于我。 – juditth

    +0

    你可以编辑你的问题,并描述你如何使用该数据类型映射? –

    +0

    我认为数据类型映射用于转换。应该有可能将数据库模型从一种数据库类型转换为另一种数据库的可能性,但我不记得具体如何。 –

    0

    最后,我通过将项目导出为XML并将所有需要的数据类型替换为oracles来解决此问题。并将其导入到项目中。

    感谢您的建议。

    J.