欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

数据库设计文档DBMS的快速转换

程序员文章站 2022-05-03 15:10:16
...

校讯通数据库从sybase系统改造到oracle系统,进行了对象的总计有312张实体表,20个过程,通过手工敲,那肯定是猴年马月的事情,不

今天PMO下达任务单,校讯通数据库从sybase系统改造到Oracle系统,进行了对象的总计有312张实体表,20个过程,通过手工敲,那肯定是猴年马月的事情,不符合项目任务的工期进度。以下是本次转化的快捷方法:

1、通过powerdesigner的Change Current DBMS操作。

new dbms 选择ORACLE Version 10gR2替换current dbms的Sybase AS Enterprise 12.5.3a。

符合期望的:通过此步操作char、varchar、numeric、datetime转向了我们期望的char、varchar2、number、date。

不符合期望的:integer没有转向我们期望的number,默认值getdate()没有转向我们期望的SYSDATE,default ''没有转为有效的default ' '。针对oracle 空串是无效的。索引名保留了sybase特性,对象中唯一,却没有符合oracle的全局唯一。过程那是原原本本保留了sybase的脚本。

2、开始针对不符合期望的改造工作

校讯通数据库设计文档是用powerdesigner15版本设计的,可以直接通过编辑工具editplus,UltraEdit打开,本质上是xml文件,然后查找integer类型定义关键字串。

类型定义:INTEGER 统一修改成了 NUMBER(10)

针对本质是布尔类型,是和否的判断的,显然NUMBER(1)就行,在定义此类字段名时有显著特征is_开头,通过EltraEdit打开找到is_字符串,在此字符串附近定位到针对这个字段的类型定义,由于做了前面步骤,都已经改成了NUMBER(10)统一改为NUMBER(1),针对其他字段,虽然可能有的字段长度不需要10,个别对待修改。

默认值定义:getdate()统一修改成了SYSDATE,在sybase中的default ''后来经分析确认,通过编辑工具打xml真实定义是''统一修改成了' '中间加入一空格,Oracle可以支持。

做了以上两步之后,表对象定义的类型以及默认值都符合了期望,至于索引名称由于要全局唯一,只能通过手工修改了,包括过程也是。通过统一替换已经给我们节省了不少时间,赶上项目任务单的计划进度不成问题了。其他类型的数据库设计文档的DBMS转换可以参考类似。

修改的规范参见:数据库设计规范

数据库设计文档DBMS的快速转换