【技术实现步骤摘要】
一种基于DB2对象自动生成mysql对象的算法
[0001]专利技术涉及数据库开发
,更具体的是涉及基于DB2对象自动生成mysql对象的算法
技术介绍
[0002]随着各行业应用系统的快速发展,数据库开发在应用系统开发过程中显得尤为重要,且应用系统经常需要适配开发DB2、MYSQL多种数据库。
[0003]由于DB2与MYSQL数据库开发在其语法上存在较大的差别,所以同一业务系统需要开发维护两份数据库代码。目前解决方案有以下两种:
[0004]一方面,针对同一业务应用系统,由两个小组同时开发DB2数据库代码和MYSQL代码。该方案不仅增加开发和测试工作量,又增加企业开发成本;对开发人员的技能要求更高,要同时熟练掌握两种或多种数据库语言;升级维护复杂,修改DB2数据库对象代码,对应MYSQL数据库对象也要同步修改;测试难度和工作量均大幅度增加,需要同时覆盖多种数据库测试案例
[0005]另一方面,先开发DB2数据库代码,再根据DB2数据库代码由人工编写MYSQL数据库代码。该方案不仅增加了开发和测试工作量,也增加了企业开发成本,同时延长了项目工期。对开发人员的技能要求更高,要同时熟练掌握两种或多种数据库语言;升级维护复杂,修改DB2数据库对象代码,对应MYSQL数据库对象也要同步修改;测试难度和工作量均大幅度增加,需要同时覆盖多种数据库测试案例。
[0006]如何解决上述技术问题成了本领域技术人员的努力方向。
技术实现思路
[0007]专利技术的目的在于 ...
【技术保护点】
【技术特征摘要】
1.一种基于DB2对象自动生成mysql对象的算法,其特征在于:包括如下步骤:S01、当用户创建或修改DB2对象时,提取对象类型,识别类型标识码,识别成功执行步骤S02,否则,返回对象类型无法识别,结束;S02、当识别DB2对象为ctTable表时,调用ConvertSqlCode方法,传入表结构信息及对象类型ctTable,返回转换执行结果,否则,执行S03;S03、当识别DB2对象为ctProcedure表时,调用ConvertSqlCode方法,传入过程对象信息及对象类型ctProcedure,返回转换执行结果,否则,执行S04;S04、当识别DB2对象为ctFunction表时,调用ConvertSqlCode方法,传入函数对象信息及对象类型ctFunction,返回转换执行结果,否则,执行S05;S05、当识别DB2对象为ctView表时,调用ConvertSqlCode方法,传入视图对象类型ctView,返回转换执行结果,否则,执行S06;S06、当识别DB2对象为ctTrigger表时,调用ConvertSqlCode方法,传入触发器信息及对象类型ctTrigger,返回转换执行结果,否则,执行S07;S07、当识别DB2对象为ctInitData表时,调用ConvertSqlCode方法,传入初始化数据信息及对象类型ctInitData,返回转换执行结果,否则,结束。2.一种系统,基于权利要求1所述的一种基于DB2对象自动生成mysql对象的算法,其特征在于,工作过程如下:P01、接收要转换的DB2对象代码,首先将对象代码以回车换行符作为分行符转入LIST对象存储,再将LIST对象逐行转入内存数组;P02、逐行分析内存数组代码,通过关键词拆分判断该行代码属于何种类型;P03、对数组中一个完整的语句占多行的代码进行分析处理,找出该完整语句的首行在数组中的索引位置记录为StartIndex,找出该完整语句的结束行在数组中的索引位置记录为EndIndex。并将StartIndex和EndIndex在301
‑
304行中分别记录,同时将301
‑
304行的行类型调整为同一类型;P04、对数组中的所有代码通过逐层缩进的方式自动进行美化,增加代码可读性;P05、分配新生成MYSQL代码的内存空间,按DB2代码的内存空间*10进行预分配;P06、将DB2代码统一转换为MYSQL代码。3.根据权利要求1所述的系统,其特征在于,P01中,对内存数组逐行顺序处理过程如下:P011、提取行前空格RowHeadSpace;P012、去除注释行后的';';P013、注释行转为'
‑‑
'开头,并在'
‑‑
'后面增加一个空格;P014、初始化多行语句的开始和结束索引index;P015、初始化区块语句的首行标志为false;P016、初始化固定输出和固定不输出语句的标志为false。4.根据权利要求1所述的系统,其特征在于,P02中,逐行分析内存数组代码,具体类型如下:默认行sstDefaultRow、空行sstSpaceRow、注释行sstNoteRow、多行注释行sstMuiltRowNote、删除视图sstDropView、删除函数sstDropFunction、删除触发器
sstDropTrigger、删除过程sstDropProcedure、创建视图sstCreateView、创建过程sstCreateProcedure、创建函数sstCreateFunction、创建出发器sstCreateTrigger、开始行sstBegin、临时表sstCreateTmpTable、定义异常退出sstDeclareSqlExceptionExit、变量声明sstDeclareVar、预编译sstPrepare、回滚sstRollback、提交sstCommit、抛出异常sstResignal、执行sstExecuteSql、过程调用sstCallProc、代码块开始sstSqlCodeSectionBegin、取值sstGetValue、赋值sstSetValue、查询sstSelectFrom、子查询sstSubSelectFrom、更新sstUpdateSet、插入sstInsertInto、删除sstDeleteFrom、循环sstLoop、LOO...
【专利技术属性】
技术研发人员:周杰,黄东,
申请(专利权)人:郑州郑大信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。