一种基于不同类型字符集的数据无损迁移方法及设备技术

技术编号:37348241 阅读:54 留言:0更新日期:2023-04-22 21:44
本发明专利技术公开了一种基于不同字符集的数据无损迁移方法及设备,属于数据存储技术领域,用于解决现有的数据兼容解决方法无法在变更字符集时保证数据无损迁移,数据迁移后易导致一系列的数据异常情况的技术问题。方法包括:创建与源数据库版本一致的目标数据库;其中,所述目标数据库采用UTF

【技术实现步骤摘要】
一种基于不同类型字符集的数据无损迁移方法及设备


[0001]本申请涉及数据存储
,尤其涉及一种基于不同类型字符集的数据无损迁移方法及设备。

技术介绍

[0002]在国内软件的研发初期,为了减少磁盘空间的使用、加快部署效率,一般会采用2个字节存储一个汉字的ZHS16GBK字符集进行汉字编码,这样在国内使用的场景下可以做到最小的磁盘占用和较全面的字符覆盖与使用。但是国内企业走向海外的需求,有很多国家和地区的项目需要对当地的员工以及企业名称进行本地化的处理,并且需要进行ERP或者其他软件的业务流转。此时,由于ZHS16GBK字符集只能限制ASCII(标准英文字符)以及中文字符,其他字符无法显示,因此会导致非国内以及非英语母语国家的名字显示出现问题,导致业务无法运行。
[0003]基于如上的场景,现阶段主要有两种方式进行字符集兼容:一种方式是使用nvarchar的字段来存储数据,但是需要定向修改数据结构,过程比较复杂。并且因为该字段与原生字符集不兼容,性能和可扩展性不是很好。第二种方式是使用Oracle的字符集转换工具DMU进行字符集转换,将ZHS16GBK字符集更改为UTF

8字符集,并对原始数据库的数据进行迁移,但是这种方式是在线迁移数据,仅迁移表内已有的数据长度以及数据结构,不会考虑表内空白部分的数据结构,此时变更字符集后有可能发生数据超长的问题。并且迁移效率也较低,迁移完成之后可能会出现新增数据的异常。

技术实现思路

[0004]本申请实施例提供了一种基于不同类型字符集的数据无损迁移方法及设备,用于解决如下技术问题:现有的数据兼容解决方法无法在变更字符集时保证数据无损迁移,数据迁移后易导致一系列的数据异常情况。
[0005]本申请实施例采用下述技术方案:
[0006]一方面,本申请实施例提供了一种基于不同字符集的数据无损迁移方法,方法包括:创建与源数据库版本一致的目标数据库;其中,所述目标数据库采用UTF

8字符集;将源数据库中数据表的数据结构迁移到所述目标数据库的对应数据表中;基于所述源数据库中的数据特征,对所述目标数据库中的数据结构进行扩展;数据结构扩展完成后,对所述源数据库与所述目标数据库中的数据结构进行对比验证;验证成功后,将所述源数据库中存储的数据迁移到所述目标数据库的对应数据表中,完成数据迁移过程。
[0007]本申请通过三步法实现了ZHS16GBK字符集数据库到UTF

8字符集数据库的数据迁移:第一步先将ZHS16GBK字符集数据库中的所有数据结构迁移到UTF

8字符集数据库中;第二步再对迁移之后的数据结构进行兼容及增强处理,以使迁移之后的数据结构更加适应UTF

8字符集数据库的运行环境;第三步再将ZHS16GBK字符集数据库中的所有数据迁移到UTF

8字符集数据库中,完成整个迁移过程。由于ZHS16GBK字符集和UTF

8字符集表示一个
汉字的字符数量并不相同,这样以三步法进行迁移,可以保证数据迁移到目标数据库之后不会出现数据超出数据表最大储存长度等异常问题,实现无损迁移。
[0008]在一种可行的实施方式中,创建与源数据库一致的目标数据库,具体包括:创建与源数据库版本一致的Oracle数据库,并在所述Oracle数据库中创建UTF8字符集;其中,所述源数据库采用ZHS16GBK字符集;在所述源数据库与所述Oracle数据库之间创建一条UTF

8字符集针对ZHS16GBK字符集的数据库管道;在所述Oracle数据库内创建与源数据库对应的数据表及数据文件,完成所述目标数据库的创建。
[0009]本申请在进行基础环境准备时,需要一套与原始ZHS16GBK字符集版本基本一致的Oracle数据库,并在Oracle数据库中创建UTF

8字符集,用于满足国产化的需求。
[0010]在一种可行的实施方式中,将源数据库中数据表的数据结构迁移到所述目标数据库的对应数据表中,具体包括:分别导出所述源数据库中所有数据表的数据结构以及存储的数据;将导出的数据结构迁移到所述目标数据库中对应的数据表中。
[0011]在一种可行的实施方式中,基于所述源数据库中的数据特征,对所述目标数据库中的数据结构进行扩展,具体包括:基于所述源数据库中的数据存储长度,对所述目标数据库中的数据存储长度进行扩展;基于所述源数据库中每个字段的数据长度,对所述目标数据库中的字段长度进行扩展。
[0012]在一种可行的实施方式中,基于所述源数据库中的数据存储长度,对所述目标数据库中的数据存储长度进行扩展,具体包括:将所述目标数据库中的数据存储长度扩展为所述源数据库中数据存储长度的1.5倍;其中,扩展后的数据存储长度不超过Oracle数据库的最大数据存储长度要求。
[0013]由于在UTF

8字符集中是3个字符表示一个汉字,ZHS16GBK字符集是2个字符表示一个汉字,因此,要将相同数量的汉字从ZHS16GBK编码变为UTF

8编码,需要至少1.5倍的字符数,因此本申请将目标数据库的数据存储长度设为源数据库中数据存储长度的1.5倍,保证源数据库中的数据能够无损迁移到目标数据库中。
[0014]在一种可行的实施方式中,基于所述源数据库中每个字段的数据长度,对所述目标数据库中的字段长度进行扩展,具体包括:对源数据库数据表中,数据列长度超过第一预设阈值的列,进行列类型迁移;将源数据库存储的数据中,数据长度超过第二预设阈值的数据对应的字段,确定为有超长风险字段;将所述目标数据库中的有超长风险字段的字段类型转换为Oracle大字段类型。
[0015]本申请通过对源数据库中有超长风险的字段、列进行数据结构的扩展,对于数据迁移后可能会超过Oracle数据库的最大存储长度的字段,转化为Oracle允许的大字段类型,例如CLOB等字段类型。这样在数据迁移到目标表之后,会自动以大字段类型进行存储,不会出现迁移后的数据长度超过Oracle数据库的最大表长度的情况。
[0016]在一种可行的实施方式中,数据结构扩展完成后,对所述源数据库与所述目标数据库中的数据结构进行对比验证,具体包括:数据结构扩展完成后,对所述源数据库与所述目标数据库的数据结构进行一致性对比,验证数据结构是否准确无误;其中,所述数据结构至少包括数据表信息、列信息以及字段信息;若两个数据库的数据结构一致,则验证成功。
[0017]在一种可行的实施方式中,验证成功后,将所述源数据库中存储的数据迁移到所述目标数据库的对应数据表中,完成数据迁移过程,具体包括:数据结构验证成功后,将导
出的源数据库存储的数据,转储到所述目标数据库的对应数据表中,且仅迁移数据,不对数据结构进行重复迁移。
[0018]在一种可行的实施方式中,在将所述源数据库中存储的数据迁移到所述目标数据库中的对应数据表本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于不同字符集的数据无损迁移方法,其特征在于,所述方法包括:创建与源数据库版本一致的目标数据库;其中,所述目标数据库采用UTF

8字符集;将源数据库中数据表的数据结构迁移到所述目标数据库的对应数据表中;基于所述源数据库中的数据特征,对所述目标数据库中的数据结构进行扩展;数据结构扩展完成后,对所述源数据库与所述目标数据库中的数据结构进行对比验证;验证成功后,将所述源数据库中存储的数据迁移到所述目标数据库的对应数据表中,完成数据迁移过程。2.根据权利要求1所述的一种基于不同字符集的数据无损迁移方法,其特征在于,创建与源数据库一致的目标数据库,具体包括:创建与源数据库版本一致的Oracle数据库,并在所述Oracle数据库中创建UTF8字符集;其中,所述源数据库采用ZHS16GBK字符集;在所述源数据库与所述Oracle数据库之间创建一条UTF

8字符集针对ZHS16GBK字符集的数据库管道;在所述Oracle数据库内创建与源数据库对应的数据表及数据文件,完成所述目标数据库的创建。3.根据权利要求1所述的一种基于不同字符集的数据无损迁移方法,其特征在于,将源数据库中数据表的数据结构迁移到所述目标数据库的对应数据表中,具体包括:分别导出所述源数据库中所有数据表的数据结构以及存储的数据;将导出的数据结构迁移到所述目标数据库中对应的数据表中。4.根据权利要求1所述的一种基于不同字符集的数据无损迁移方法,其特征在于,基于所述源数据库中的数据特征,对所述目标数据库中的数据结构进行扩展,具体包括:基于所述源数据库中的数据存储长度,对所述目标数据库中的数据存储长度进行扩展;基于所述源数据库中每个字段的数据长度,对所述目标数据库中的字段长度进行扩展。5.根据权利要求4所述的一种基于不同字符集的数据无损迁移方法,其特征在于,基于所述源数据库中的数据存储长度,对所述目标数据库中的数据存储长度进行扩展,具体包括:将所述目标数据库中的数据存储长度扩展为所述源数据库中数据存储长度...

【专利技术属性】
技术研发人员:郑伟波赵本帅孔庆星刘威方立刚王帅男赵春喜
申请(专利权)人:浪潮通用软件有限公司
类型:发明
国别省市:

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

1