一种基于DB2对象自动生成mysql对象的算法制造技术

技术编号:38903620 阅读:8 留言:0更新日期:2023-09-22 14:21
发明专利技术公开了一种基于DB2对象自动生成mysql对象的算法,涉及数据库开发技术领域,发明专利技术包括建立DB2和MYSQL数据表、对象类型及语法资源库,在资源库中将DB2数据表、对象类型及语法资源库与MYSQL数据表、对象类型及语法资源库进行逐一匹配对应,保存匹配对应的规则,在创建或修改DB2数据表及对象时,自动创建或修改MYSQL数据表及对象;通过本发明专利技术首先降低多语言数据库开发和测试的工作量,降低企业开发成本,缩短项目工期。其次可降低对多数开发人员的技能要求,只需要小部分人员同时掌握DB2和MYSQL两门语言。降低升级维护的复杂度,在修改DB2版本代码时同步生成MYSQL代码,可保障版本一致性。降低测试人员的工作量,只需将重心集中在DB2版本测试,有效将减轻MYSQL版本测试压力的优点。压力的优点。压力的优点。

【技术实现步骤摘要】
一种基于DB2对象自动生成mysql对象的算法


[0001]专利技术涉及数据库开发
,更具体的是涉及基于DB2对象自动生成mysql对象的算法


技术介绍

[0002]随着各行业应用系统的快速发展,数据库开发在应用系统开发过程中显得尤为重要,且应用系统经常需要适配开发DB2、MYSQL多种数据库。
[0003]由于DB2与MYSQL数据库开发在其语法上存在较大的差别,所以同一业务系统需要开发维护两份数据库代码。目前解决方案有以下两种:
[0004]一方面,针对同一业务应用系统,由两个小组同时开发DB2数据库代码和MYSQL代码。该方案不仅增加开发和测试工作量,又增加企业开发成本;对开发人员的技能要求更高,要同时熟练掌握两种或多种数据库语言;升级维护复杂,修改DB2数据库对象代码,对应MYSQL数据库对象也要同步修改;测试难度和工作量均大幅度增加,需要同时覆盖多种数据库测试案例
[0005]另一方面,先开发DB2数据库代码,再根据DB2数据库代码由人工编写MYSQL数据库代码。该方案不仅增加了开发和测试工作量,也增加了企业开发成本,同时延长了项目工期。对开发人员的技能要求更高,要同时熟练掌握两种或多种数据库语言;升级维护复杂,修改DB2数据库对象代码,对应MYSQL数据库对象也要同步修改;测试难度和工作量均大幅度增加,需要同时覆盖多种数据库测试案例。
[0006]如何解决上述技术问题成了本领域技术人员的努力方向。

技术实现思路

[0007]专利技术的目的在于:为了解决上述技术问题,专利技术提供一种基于DB2对象自动生成mysql对象的算法。
[0008]专利技术为了实现上述目的具体采用以下技术方案:
[0009]一种基于DB2对象自动生成mysql对象的算法,包括如下步骤:
[0010]S01、当用户创建或修改DB2对象时,提取对象类型,识别类型标识码,识别成功执行步骤S02,否则,返回对象类型无法识别,结束;
[0011]S02、当识别DB2对象为ctTable表时,调用ConvertSqlCode方法,传入表结构信息及对象类型ctTable,返回转换执行结果,否则,执行S03;
[0012]S03、当识别DB2对象为ctProcedure表时,调用ConvertSqlCode方法,传入过程对象信息及对象类型ctProcedure,返回转换执行结果,否则,执行S04;
[0013]S04、当识别DB2对象为ctFunction表时,调用ConvertSqlCode方法,传入函数对象信息及对象类型ctFunction,返回转换执行结果,否则,执行S05;
[0014]S05、当识别DB2对象为ctView表时,调用ConvertSqlCode方法,传入视图对象类型ctView,返回转换执行结果,否则,执行S06;
[0015]S06、当识别DB2对象为ctTrigger表时,调用ConvertSqlCode方法,传入触发器信息及对象类型ctTrigger,返回转换执行结果,否则,执行S07;
[0016]S07、当识别DB2对象为ctInitData表时,调用ConvertSqlCode方法,传入初始化数据信息及对象类型ctInitData,返回转换执行结果,否则,结束。
[0017]一种系统,基于一种基于DB2对象自动生成mysql对象的算法,能够实现如下用途:
[0018]P01、接收要转换的DB2对象代码,首先将对象代码以回车换行符作为分行符转入LIST对象存储,再将LIST对象逐行转入内存数组;
[0019]P02、逐行分析内存数组代码,通过关键词拆分判断该行代码属于何种类型;
[0020]P03、对数组中一个完整的语句占多行的代码进行分析处理,找出该完整语句的首行在数组中的索引位置记录为StartIndex,找出该完整语句的结束行在数组中的索引位置记录为EndIndex。并将StartIndex和EndIndex在301

304行中分别记录,同时将301

304行的行类型调整为同一类型;
[0021]P04、对数组中的所有代码通过逐层缩进的方式自动进行美化,增加代码可读性;
[0022]P05、分配新生成MYSQL代码的内存空间,按DB2代码的内存空间*10进行预分配;
[0023]P06、将DB2代码统一转换为MYSQL代码。
[0024]3.根据权利要求1所述的系统,其特征在于,P01中,对内存数组逐行顺序处理过程如下:
[0025]P011、提取行前空格RowHeadSpace;
[0026]P012、去除注释行后的';';
[0027]P013、注释行转为'
‑‑
'开头,并在'
‑‑
'后面增加一个空格;
[0028]P014、初始化多行语句的开始和结束索引index;
[0029]P015、初始化区块语句的首行标志为false;
[0030]P016、初始化固定输出和固定不输出语句的标志为false。
[0031]进一步地,P02中,逐行分析内存数组代码,具体类型如下:
[0032]默认行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、LOOP循环结束sstEndloop、FOR循环sstFor、FOR循环结束sstEndFor、WHILE循环sstWhile、WHILE循环结束sstEndWhile、if判断sstIf、if判断结束sstEndif、case条件判断sstCase、case条件判断sstEndCase、代码块结束sstSqlCodeSectionEnd、跳转退出sstGoTo本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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...

【专利技术属性】
技术研发人员:周杰黄东
申请(专利权)人:郑州郑大信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1