一种异构CPU体系下数据全量迁移的方法与流程

文档序号:23726491发布日期:2021-01-26 17:02阅读:95来源:国知局
一种异构cpu体系下数据全量迁移的方法
技术领域
[0001]
本发明涉及在不同cpu体系架构下包括不同的操作系统、不同的数据库之间进行全量数据迁移并通过一致性校验保证数据完整性的方法,属于数据库技术领域。


背景技术:

[0002]
随着计算机cpu技术的发展,桌面计算机已经从x86体系逐步扩展为包括arm、mips、sw64等多种体系结构,并在逐步替代x86体系,操作系统从windows扩展为多种基于linux内核的操作系统,数据库也从oracle、sqlserver、db2等传统数据库扩展为达梦、人大金仓、神舟通用等多种数据库,由此带来传统的应用系统在向新型软硬件环境迁移时需要进行跨cpu体系架构、跨数据库的数据迁移问题。
[0003]
数据库软件提供的数据迁移工具在实际应用中出现数据长度改变、数据精度改变、生僻字丢失等问题,并且没有提供数据完整性校验的方法,导致业务系统出现存储错误、数据丢失等问题,使得向新型软硬件环境迁移困难。


技术实现要素:

[0004]
本发明的目的是提供一种异构cpu体系下通过离线文件和字段校验在异构cpu体系下实现全量数据迁移并保证数据完整性的方法。
[0005]
为了达到上述目的,本发明的技术方案是提供了一种异构cpu体系下数据全量迁移的方法,其特征在于,包括以下步骤:
[0006]
步骤1、使用sql语句从源数据库导出数据表数据生成数据表的文本文件,每个数据表生成一个独立的文本文件,每个文本文件名为数据表名,在每个文本文件中:
[0007]
第一行为以ascii码一分隔的字段名,且第一行的最后为一个校验字段名;
[0008]
从第二行起为数据表的数据,相邻两行数据之间以ascii码二分隔,每行数据的字段值以ascii码一分隔,其中:字符型数据以双引号括起;数字型数据保持不变;日期型数据以[]括起,年月日的分隔符为/;空值为(null);文本型数据保持不变,每行数据的最后为校验数据;
[0009]
步骤2、读取一个文本文件,将文件名记录为当前文本文件对应的数据表名;
[0010]
步骤3、读取当前文本文件的内容,将ascii码一及ascii码二替换为空格,另存为临时文件tmp_数据表名;
[0011]
步骤4、从临时文件tmp_数据表名的第二行开始按行读入,除了最后的校验数据外,每行的其他数据以ascii码一为分隔读取每个字段值并进行数据格式转换,其中:字符型数据将两端的双引号替换为单引号;数字型数据保持不变;日期型数据去掉两端的[],将年月日的分隔符/替换为-,上午/下午替换为am/pm,并以单引号括起;(null)替换为null;文本型数据以单引号括起;
[0012]
每行数据的字段之间以逗号分隔,前端加入insert into表名values(,后端加入);ascii码二,存入导入文件do_数据表名;
[0013]
将每行数据中的校验数据存入导入校验文件vf_数据表名;
[0014]
步骤5、重复步骤2到步骤4,直到所有文本文件均被处理完成;
[0015]
步骤6、将所有导入文件do_数据表名、导入校验文件vf_数据表名转储到目标数据库服务器上;
[0016]
步骤7、按行依次读入导入文件do_数据表名的内容,写入新的数据库语句文件,每个数据库语句文件最多包含指定的行,文件名以db-tb1.sql~db-tbn.sql依次顺序编号;
[0017]
步骤8、在目标数据库中依次执行数据库语句文件,将数据插入目标数据库。
[0018]
优选地,步骤1中,当前一行数据的所述校验数据通过以下方式得到:
[0019]
将当前一行除校验数据外的其他数据以字符串方式拼接后使用摘要算法计算摘要值,计算得到的摘要值即为所述校验数据。
[0020]
优选地,步骤1中,所述日期型数据格式为4位年/2位月/2位日:2位小时:2位分钟:2位秒:3位毫秒上午/下午。
[0021]
优选地,步骤6中,在转储过程中对导入文件do_文件名进行加密。
[0022]
优选地,步骤8之后还包括:
[0023]
步骤9、在目标数据库中使用sql语句依次检索出导入的数据,按步骤1的方法转换为字符串后拼接,使用与步骤1相同摘要算法计算摘要值,与导入校验文件vf_数据表名的摘要值比较,如相同则表示该数据行导入正确,如不相同则表示该数据行导入不正确。
[0024]
本发明提供的方法,解决了异构cpu体系下数据全量迁移完整性的问题,有利于信息系统的向新型软硬件环境迁移,有利于解决无网络环境下的数据迁移,有利于提高数据迁移过程中的完整性和安全性,有利于对迁移数据的备份,有利于识别错误的迁移数据。利用本发明提供的方法可以在不同数据库之间进行数据的全量迁移,简化数据迁移过程,提高数据完整性,并适用于有多种cpu体系的环境。
具体实施方式
[0025]
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
[0026]
现有一个oracle数据库的数据需要迁移到达梦数据库中,两个数据库在异地,没有网络连接。
[0027]
如果采用数据库提供的数据迁移工具,则需要网络同时联通两个数据库。
[0028]
如果使用本发明所提出的数据迁移方法,导出数据文件并进行转换,将数据文件转储到异地的达梦数据库,完成数据迁移。
[0029]
假设需要迁移的数据表为fl_inst,字段id为字符型,字段order为数字型,字段opdate为日期型,字段pid为空值,字段datadesc为文本值,数据行数为60000行,则执行以下步骤:
[0030]
步骤1、生成文件fl_inst.txt,其中:文件fl_inst.txt的第一行为以ascii码9分隔的字段名:id order opdate pid datadesc。第一行的最后为一个校验字段名。
[0031]
文件fl_inst.txt的第二行起为数据,相邻两行数据之间以ascii码10分隔,其中:
[0032]
id字段的值以双引号括起(如:“0001”);order字段的值不变(如:2);opdate字段的值以[]括起,格式为4位年/2位月/2位日:2位小时:2位分钟:2位秒:3位毫秒上午/下午(如:[2014/01/16:11:04:38上午]);pid字段的值为(null);datadesc字段的值不变(如:工作完成);将数据(如:

0001

,2,

2014-01-16:11:04:38am,null,

工作完成

)拼接为字符串(如:000122014-01-16:11:04:38amnull工作完成);
[0033]
每行数据的最后为校验数据,使用md5摘要算法生成摘要值(如:2d12fa341888186ff7d37e40762d991f)。
[0034]
步骤2、读取fl_inst.txt,记录文件名为fl_inst。
[0035]
步骤3、读取fl_inst.txt的内容,将ascii码9及ascii码10替换为空格,另存为临时文件tmp_fl_inst.txt。
[0036]
步骤4、从tmp_fl_inst.txt的第二行开始按行依次读入内容,以ascii码9为分隔读取每个字段值并进行数据格式转换,其中:
[0037]
id字段的值将两端的双引号替换为单引号(如:“0001”转换为

0001

);order字段的值保持不变(如:2);opdate字段的值去掉两端的[],将年月日的分隔符/替换为-,上午/下午替换为am/pm,并以单引号括起(如:[2014/01/16:11:04:38上午]转换为

2014-01-16:11:04:38am

);pid字段的值为null;datadesc字段的值以单引号括起(如:

工作完成

)。
[0038]
每行数据的字段之间以逗号分隔,前端加入insert into表名values(,后端加入);ascii码10,如:转换为insert into fl_inst values(

0001

,2,

2014-01-16:11:04:38am

,null,

工作完成

);ascii码10,存入导入文件do_fl_inst.txt。
[0039]
将每行数据最后的摘要值(如:4662802bd2aef0e3681c5a1f63be8309)存入vf_fl_inst.txt。
[0040]
步骤5、重复步骤2到4,直到所有文本文件均被处理完成。
[0041]
步骤6、将导入文件do_fl_inst.txt、vf_fl_inst.txt转储到达梦数据库服务器上(如:通过u盘、光盘等介质),转储过程中使用sm4算法(国密对称加密算法)对数据文件进行加密。
[0042]
步骤7、按行依次读入导入文件do_fl_inst.txt的内容,写入新的数据库语句文件,每个文件最多包含指定的行(如:50000行),文件名为infx-kb1.sql,infx-kb2.sql。
[0043]
步骤8、在达梦数据库中依次执行数据库语句文件infx-kb1.sql,infx-kb2.sql,将数据插入达梦数据库。
[0044]
步骤9、使用sql语句依次检索出步骤8插入的数据(如:

0001

,2,

2014-01-16:11:04:38am

,null,

工作完成

),按步骤1的方法转换为字符串(如:

0001

,2,

2014-01-16:11:04:38am

,null,

工作完成

),将数据拼接为字符串(如:000122014-01-16:11:04:38amnull工作完成)使用步骤1相同的摘要算法(如:md5)生成摘要值(如:2d12fa341888186ff7d37e40762d991f),与vf_fl_inst.txt中的摘要值(如:2d12fa341888186ff7d37e40762d991f)比较,如相同则表示该数据行导入正确,如不相同则表示该数据行导入不正确。
[0045]
步骤10、结束。
[0046]
以上步骤描述了异构cpu体系下数据全量迁移的过程。
[0047]
通过采用本发明提供的数据迁移方法,解决了在无网络环境下的异构cpu体系下数据全量迁移,有利于信息系统的向新型软硬件环境迁移,有利于提高数据迁移过程中的
完整性和安全性,有利于对迁移数据的备份,有利于识别错误的迁移数据。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1