一种数据表迁移方法、装置及相关组件与流程

文档序号:22796027发布日期:2020-11-04 03:48阅读:115来源:国知局
本申请涉及数据迁移领域,特别涉及一种数据表迁移方法、装置及相关组件。
背景技术
::随着互联网大数据业务项目的迅速发展,为满足更多更强大的业务需求,需要对运营中的系统项目从增加系统资源、优化资源配置、优化重点程序和升级系统数据库等多个维度进行综合优化,同时还需要保证原系统数据不受到损失。往往很多系统项目,在综合优化、系统升级的时候考虑到成本预算等多方面的原因,需要把系统a中的数据,提供给b系统使用。现实场景下a、b两个系统项目在不同生产网络,网络隔离,且两个系统的数据表结构及数据库存在不一致情况。同时,a系统项目可导出数据格式有限,且目前的导入方案均不支持大数量一次性导入,或有数据量上限限制,需要分批次、多次执行,效率低,容易出错,在一定程度上给不同系统下的数据迁移带来难度。因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。技术实现要素:本申请的目的是提供一种数据表迁移方法、装置、电子设备及计算机可读存储介质,能够使整个数据表迁移过程只对目标系统的数据库执行一次操作,缩短数据导入时间,减少了数据导入时出错的几率,避免对目标系统的数据库重复操作。为解决上述技术问题,本申请提供了一种数据表迁移方法,包括:将待处理系统中的数据导出至预设目录文件;创建空表,所述空表的结构与目标系统的数据表的结构一致;读取所述预设目标文件中的数据,将每一条所述数据格式化为满足所述目标系统的要求的目标数据,并将每一所述目标数据插入所述空表中;当所有所述目标数据均插入到所述空表,对所述空表执行拷贝操作,以便将所述空表中的数据导入到所述目标系统中。优选的,所述将待处理系统中的数据导出至预设目录文件之后,该数据表迁移方法还包括:按预设分隔符对每一条所述数据进行分隔处理。优选的,所述创建空表的过程具体包括:在所述目标系统或所述待处理系统的内存中创建空表。优选的,所述创建空表的过程具体包括:利用system.data命名空间下的datatable创建空表;根据所述目标系统的数据表的结构,利用cplumns.add初始化所述空表,以使所述空表的结构与目标系统的数据表的结构一致。优选的,所述读取所述预设目标文件中的数据的过程具体包括:利用system.io下的streamreader循环读取所述预设目标文件中的数据。优选的,所述目标系统的要求包括字段要求和/或格式要求。优选的,所述将待处理系统的数据导出至预设目录文件之前,该数据表迁移方法还包括:登录业务服务器后台,通过所述待处理系统的参数信息执行mysql命令连接所述待处理系统的数据库,以便获取所述待处理系统的数据表中的数据。为解决上述技术问题,本申请还提供了一种数据表迁移装置,包括:导出模块,用于将待处理系统中的数据导出至预设目录文件;创建模块,用于创建空表,所述空表的结构与目标系统的数据表的结构一致;处理模块,用于读取所述预设目标文件中的数据,将每一条所述数据格式化为满足所述目标系统的要求的目标数据,并将每一所述目标数据插入所述空表中;拷贝模块,用于当所有所述目标数据均插入到所述空表,对所述空表执行拷贝操作,以便将所述空表中的数据导入到所述目标系统中。为解决上述技术问题,本申请还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上文任意一项所述的数据表迁移方法的步骤。为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任意一项所述的数据表迁移方法的步骤。本申请所提供的一种数据表迁移方法,创建一个结构与目标系统的数据表的结构一致的空表,将从待处理系统的数据表中的每一条数据按目标系统的要求格式化为目标数据,将每一目标数据插入到空表中,当所有数据均存储到空表后,将空表中的数据拷贝到目标系统中,由于空表中包括目标系统需求的所有数据,且空表的结构和目标系统的数据表的结构一致,因此,整个数据表迁移过程只需要对目标系统的数据库执行一次操作,缩短数据导入时间,减少了数据导入时出错的几率,避免对数据库重复操作。本申请还提供了一种数据表迁移装置、电子设备及计算机可读存储介质,具有和上述数据表迁移方法相同的有益效果。附图说明为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请所提供的一种数据表迁移方法的步骤流程图;图2为本申请所提供的一种数据表迁移装置的结构示意图。具体实施方式本申请的核心是提供一种数据表迁移方法、装置、电子设备及计算机可读存储介质,能够使整个数据表迁移过程只对目标系统的数据库执行一次操作,缩短数据导入时间,减少了数据导入时出错的几率,避免对目标系统的数据库重复操作。为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参照图1,图1为本申请所提供的一种数据表迁移方法的步骤流程图,该数据表迁移方法包括:s101:将待处理系统中的数据导出至预设目录文件;具体的,在执行本步骤之前,还可以包括:登录业务服务器后台,通过待处理系统的参数信息执行mysql命令连接待处理系统的数据库,以便获取所述待处理系统的数据库中的数据,然后使用select...intooutfile导出txt格式的数据到指定目录文件。可以理解的是,为便于导出数据,则本步骤还可以包括确定设定文件存取路径的操作,可以在待处理系统中确定文件存取路径,也可以在目标系统中确定文件存取路径。其中,参数信息包括但不限于数据库ip、端口号、数据库user、passd等。考虑到每个系统中数据表中数据的导出方式不一致,但是最方便的导出格式基本都为txt格式,当然除了可以用txt格式还可以为其他格式。作为一种优选的实施例,按预设分隔符对每一条数据进行分隔处理,具体的,将目标系统的数据导出到预设目录文件后,并以“,”来分隔每一列数据,以便后续被多程序使用。s102:创建空表,空表的结构与目标系统的数据表的结构一致;具体的,按目标系统的数据表的结构创建一个空表,使空表的结构和目标系统的数据表的结构一致。作为一种优选的实施例,可以在目标系统或待处理系统的内存中创建空表,在内存中创建空表,具有处理速度快,容易操作的优点,同时数据导入执行效率提高,缩短导入时间。为进一步提高数据拷贝操作的速度,可在目标系统的内存中创建空表,相应的,可将导出的数据拷贝到目标系统中,并声明文件存储路径,即预设目录文件的路径,以便后续操作。具体的,本步骤可利用system.data命名空间下的datatable方法创建空表,然后对表结构根据目标系统b,利用columns.add方法进行初始化,保证空表结构和目标系统b数据表结构一致性。创建空表的过程如下:datatablemytemptable=newdatatable();初始化表结构:假设目标系统的数据表共有6列,tc_custno客户编号、tc_name名称、tc_type证件类型、tc_idno证件号码、tc_validity证件有效期、tc_gen性别;使用columns.add方法来初始化表的过程如下:mytemptable.columns.add("tc_custno");mytemptable.columns.add("tc_name");mytemptable.columns.add("tc_type");mytemptable.columns.add("tc_idno");mytemptable.columns.add("tc_validity");mytemptable.columns.add("tc_gen")。s103:读取预设目标文件中的数据,将每一条数据格式化为满足目标系统的要求的目标数据,并将每一目标数据插入空表中;本步骤的目的在于从导出的txt文件中读取数据,按目标系统的要求处理数据并导入到新创建的空表中,作为一种优选的实施例,目标系统的要求包括字段要求和/或格式要求。具体的,可以使用system.io下的streamreader来while循环读取数据,并从第一条数据开始处理,格式化为目标系统要求的目标数据。可以理解的是,循环结束后,得到了一个新的且处理完整、符合目标系统要求的数据表mytemptable。这里的循环数据处理方法适合任何其它复杂的逻辑处理,比较灵活,可根据每个系统的实际情况具体分析。如:stringfilepath=”/temp/result.text”;streamreadersr=newstreamreader(filepath);循环处理举例:请参照表1,表1为待处理系统中的证件类型与目标系统中的证件类型对应关系表。表1为待处理系统中的证件类型与目标系统中的证件类型对应关系表待处理系统目标系统a身份证u身份证n居住证g居住证根据以上对应关系,在循环中处理:s104:当所有目标数据均插入到空表,对空表执行拷贝操作,以便将空表中的数据导入到目标系统中。具体的,此步骤使用sqlbulkcopy命令执行数据copy操作,由于空表的结构和目标系统的数据表结构一致,且数据完整,因此,本实施例只需对数据库做一次操作,就可以将所有数据都会拷贝到目标系统中,实际测试中,500万条数据少于10分钟,执行效率比inset有很大提高。如下所示:可见,在本实施例中,首先创建一个结构与目标系统的数据表的结构一致的空表,将从待处理系统的数据表中的每一条数据按目标系统的要求格式化为目标数据,将每一目标数据插入到空表中,当所有数据均存储到空表后,将空表中的数据拷贝到目标系统中,由于空表中包括目标系统需求的所有数据,且空表的结构和目标系统的数据表的结构一致,因此,整个数据表迁移过程只需要对目标系统的数据库执行一次操作,缩短数据导入时间,减少了数据导入时出错的几率,避免对数据库重复操作。请参照图2,图2为本申请所提供的一种数据表迁移装置的结构示意图,该数据表迁移装置包括:导出模块1,用于将待处理系统中的数据导出至预设目录文件;创建模块2,用于创建空表,空表的结构与目标系统的数据表的结构一致;处理模块3,用于读取预设目标文件中的数据,将每一条数据格式化为满足目标系统的要求的目标数据,并将每一目标数据插入空表中;拷贝模块4,用于当所有目标数据均插入到空表,对空表执行拷贝操作,以便将空表中的数据导入到目标系统中。可见,在本实施例中,首先创建一个结构与目标系统的数据表的结构一致的空表,将从待处理系统的数据表中的每一条数据按目标系统的要求格式化为目标数据,将每一目标数据插入到空表中,当所有数据均存储到空表后,将空表中的数据拷贝到目标系统中,由于空表中包括目标系统需求的所有数据,且空表的结构和目标系统的数据表的结构一致,因此,整个数据表迁移过程只需要对目标系统的数据库执行一次操作,缩短数据导入时间,减少了数据导入时出错的几率,避免对数据库重复操作。作为一种优选的实施例,该数据表迁移装置还包括:分隔模块,用于按预设分隔符对每一条数据进行分隔处理。作为一种优选的实施例,创建模块2具体用于:在目标系统或待处理系统的内存中创建空表。作为一种优选的实施例,创建模块2具体用于:利用system.data命名空间下的datatable创建空表;根据目标系统的数据表的结构,利用cplumns.add初始化空表,以使空表的结构与目标系统的数据表的结构一致。作为一种优选的实施例,读取预设目标文件中的数据的过程具体包括:利用system.io下的streamreader循环读取预设目标文件中的数据。作为一种优选的实施例,目标系统的要求包括字段要求和/或格式要求。作为一种优选的实施例,该数据表迁移装置还包括:连接模块,用于登录业务服务器后台,通过待处理系统的参数信息执行mysql命令连接待处理系统的数据库,以便获取待处理系统的数据表中的数据。另一方面,本申请还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上文任意一项的数据表迁移方法的步骤。对于本申请所提供的一种电子设备的介绍请参照上述实施例,本申请在此不再赘述。本申请所提供的一种电子设备具有和上述数据表迁移方法相同的有益效果。另一方面,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上文任意一项的数据表迁移方法的步骤。对于本申请所提供的一种计算机可读存储介质的介绍请参照上述实施例,本申请在此不再赘述。本申请所提供的一种计算机可读存储介质具有和上述数据表迁移方法相同的有益效果。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其他实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1