一种数据导入方法、装置、设备及介质制造方法及图纸

技术编号:37077502 阅读:15 留言:0更新日期:2023-03-29 19:53
本申请公开了一种数据导入方法、装置、设备及介质,涉及计算机技术领域,包括:获取数据导入请求和待导入数据,对所述待导入数据进行分片处理,以得到各分片数据;将预设的事务置为开启状态,并利用多线程将各所述分片数据导入至本地的数据表;执行事务提交操作,然后判断事务提交操作是否执行成功,若事务提交操作执行成功,则结束数据导入。通过本申请的上述技术方案,能够有效提高数据导入的效率,增加数据导入的安全性,避免数据导入较多时出现故障情况,保证数据的一致性。保证数据的一致性。保证数据的一致性。

【技术实现步骤摘要】
一种数据导入方法、装置、设备及介质


[0001]本专利技术涉及计算机
,特别涉及一种数据导入方法、装置、设备及介质。

技术介绍

[0002]现阶段的数据导入大部分都是基于单线程模型来进行开发,这也就导致效率在根本上无法进行显著提升,并且在数据导入过程中可能由于系统突然崩溃而导致数据导入失败,剩下的数据无法再次进行导入,无法达到高可用的状态。Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。目前,基于Java语言单线程的数据导入方案,导入任务开始后数据串行导入,不支持数据重试,在导入过程中发生异常时无法对数据进行重试恢复,单库单表进行查询与写入,导入效率低下,当有大量数据时耗时长,并且查询与写入效率低,在高并发情况下容易导致死锁,当导入发生异常时无法进行数据重试,容易导致数据丢失,在一些敏感数据下容易导致重大事故,造成大量损失,并且导入数据无法做到一制,在异常情况下容易导致数据库产生大量垃圾数据。
[0003]由上可见,如何提高数据导入的效率,增加数据导入的安全性,避免数据导入较多时出现故障情况,保证数据的一致性是本领域有待解决的问题。

技术实现思路

[0004]有鉴于此,本专利技术的目的在于提供一种数据导入方法、装置、设备及介质,能够提高数据导入的效率,增加数据导入的安全性,避免数据导入较多时出现故障情况,保证数据的一致性。其具体方案如下:
[0005]第一方面,本申请公开了一种数据导入方法,包括:
[0006]获取数据导入请求和待导入数据,对所述待导入数据进行分片处理,以得到各分片数据;
[0007]将预设的事务置为开启状态,并利用多线程将各所述分片数据导入至本地的数据表;
[0008]执行事务提交操作,然后判断事务提交操作是否执行成功,若事务提交操作执行成功,则结束数据导入。
[0009]可选的,所述对所述待导入数据进行分片处理,以得到各分片数据,包括:
[0010]采用MAX(ID)方法确定出各数据分片范围;
[0011]按照各所述数据分片范围对所述待导入数据进行分片处理,以得到各分片数据。
[0012]可选的,所述采用MAX(ID)方法确定出各数据分片范围之后,还包括:
[0013]获取所有的数据分片范围,并将所述所有的数据分片范围保存至本地的分片表;
[0014]从本地的所有节点中确定出执行分片处理的执行节点,并从所述执行节点中确定
出起始执行节点,将所述起始执行节点保存至所述分片表。
[0015]可选的,所述利用多线程将各所述分片数据导入至本地的数据表,包括:
[0016]基于所述数据导入请求创建线程池,并从所述线程池中确定出各线程;
[0017]采用多线程批次导入的方式,并利用多线程的countdowmlatch、多线程的future以及所述线程池将各所述分片数据导入至本地的数据表。
[0018]可选的,所述判断事务提交操作是否执行成功之后,还包括:
[0019]若事务提交操作未执行成功,则生成用于表征事务提交操作未执行成功的执行任务记录;
[0020]将所述执行任务保存至本地的任务表。
[0021]可选的,所述的数据导入检测方法,还包括:
[0022]根据预设的事务提交重试执行周期创建定时任务;
[0023]记录所述执行任务保存时间,基于当前时间和所述执行任务保存时间确定出时间差,判断所述时间差是否等于所述事务提交重试执行周期,若所述时间差等于所述事务提交重试执行周期,则触发所述定时任务。
[0024]可选的,所述将所述执行任务记录保存至本地的任务表之后,还包括:
[0025]基于所述任务表中的所述执行任务记录生成告警信息;
[0026]按照预设的告警信息发送方式将所述告警信息发送至客户端。
[0027]第二方面,本申请公开了一种数据导入装置,包括:
[0028]数据分片模块,用于获取数据导入请求和待导入数据,对所述待导入数据进行分片处理,以得到各分片数据;
[0029]分片数据导入模块,用于将预设的事务置为开启状态,并利用多线程将各所述分片数据导入至本地的数据表;
[0030]判断模块,用于执行事务提交操作,然后判断事务提交操作是否执行成功,若事务提交操作执行成功,则结束数据导入。
[0031]第三方面,本申请公开了一种电子设备,包括:
[0032]存储器,用于保存计算机程序;
[0033]处理器,用于执行所述计算机程序,以实现前述的数据导入方法。
[0034]第四方面,本申请公开了一种计算机存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的数据导入方法的步骤。
[0035]可见,本申请提供了一种数据导入方法,包括获取数据导入请求和待导入数据,对所述待导入数据进行分片处理,以得到各分片数据;将预设的事务置为开启状态,并利用多线程将各所述分片数据导入至本地的数据表;执行事务提交操作,然后判断事务提交操作是否执行成功,若事务提交操作执行成功,则结束数据导入。本申请通过对数据进行分片处理,提高了程序的可扩展性和稳定性,数据批量异步处理,增加了程序执行的效率,并且对失败部分的分片数据可以做到最小程度止损以及针对这部分分片数据进行数据重试恢复,并且本申请为提高程序异步执行效率,对线程进行手动控制来达成协作的目的,采用分库分表,将表结构的设计以及分表设计读写分离,提高数据库最大承载量,在高并发的情况下可以极大的提高系统负载率和查询效率,同时可以高效的避免死锁的产生。规避风险在偶尔的机器宕机,网络波动等情况出现时,仍能够实现数据一致。
附图说明
[0036]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0037]图1为本申请公开的一种数据导入检测方法流程图;
[0038]图2为本申请公开的一种数据导入检测方法流程图;
[0039]图3为本申请公开的一种数据导入检测方法的具体流程图;
[0040]图4为本申请公开的一种数据导入检测装置结构示意图;
[0041]图5为本申请提供的一种电子设备结构图。
具体实施方式
[0042]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据导入检测方法,其特征在于,包括:获取数据导入请求和待导入数据,对所述待导入数据进行分片处理,以得到各分片数据;将预设的事务置为开启状态,并利用多线程将各所述分片数据导入至本地的数据表;执行事务提交操作,然后判断事务提交操作是否执行成功,若事务提交操作执行成功,则结束数据导入。2.根据权利要求1所述的数据导入检测方法,其特征在于,所述对所述待导入数据进行分片处理,以得到各分片数据,包括:采用MAX(ID)方法确定出各数据分片范围;按照各所述数据分片范围对所述待导入数据进行分片处理,以得到各分片数据。3.根据权利要求2所述的数据导入检测方法,其特征在于,所述采用MAX(ID)方法确定出各数据分片范围之后,还包括:获取所有的数据分片范围,并将所述所有的数据分片范围保存至本地的分片表;从本地的所有节点中确定出执行分片处理的执行节点,并从所述执行节点中确定出起始执行节点,将所述起始执行节点保存至所述分片表。4.根据权利要求1所述的数据导入检测方法,其特征在于,所述利用多线程将各所述分片数据导入至本地的数据表,包括:基于所述数据导入请求创建线程池,并从所述线程池中确定出各线程;采用多线程批次导入的方式,并利用多线程的countdowmlatch、多线程的future以及所述线程池将各所述分片数据导入至本地的数据表。5.根据权利要求1所述的数据导入检测方法,其特征在于,所述判断事务提交操作是否执行成功之后,还包括:若事务提交操作未执行成功,...

【专利技术属性】
技术研发人员:毛小毫杨迪
申请(专利权)人:杭州安恒车联网安全技术有限公司
类型:发明
国别省市:

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

1