一种百万级别excel数据快速平稳导入系统转让专利

申请号 : CN201910523439.5

文献号 : CN110275918A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王磊

申请人 : 浙江百应科技有限公司

摘要 :

本发明涉及excel数据技术领域,且公开了一种百万级别excel数据快速平稳导入系统,步骤一,开始读取数据,加载excel的文件后,采用逐行读取数据的方式,避免把数据全部加载到内存中,从而造成系统的内存溢出。该百万级别excel数据快速平稳导入系统,通过采用读写分离,一个线程队列负责读取数据,处理数据,然后放入数据队列池中,同时另外一个线程队列负责从数据队列池中获取数据,多线程同时把数据写入数据库,使这个两个步骤不再同步执行,相互等待,同时对数据进行分批导入,不会随着excel的内容增加而影响导入的速度,同时还支持多线程把数据写入数据库中,大大提高导入的速度,从而使导入的速度始终保持在一个相对恒定的速度的范围值之内。

权利要求 :

1.一种百万级别excel数据快速平稳导入系统,其特征在于:包括以下操作步骤第一步:开始读取数据,加载excel的文件后,采用逐行读取数据的方式,避免把数据全部加载到内存中,从而造成系统的内存溢出,然后对数据进行清洗处理;

第二步:把处理后的数据加入数据队列中,然后重复循环1,2两步,直到当前的数据队列数量达到上限。

第三步:判断数据队列中的数据是否达到上限,如果达到上限把这个数据队列放入数据队列池中,然后创建新的数据队列用于接收新的数据,然后重复1,2,3步骤。

2.一种百万级别excel数据快速平稳导入系统,其特征在于:基于本文提到的一种百万级excel数据快速平稳导入系统。

3.一种百万级别excel数据快速平稳导入系统,其特征在于:在开始导入数据时,首先系统会检查限流器的阀值,是否达到上限。

4.一种百万级别excel数据快速平稳导入系统,其特征在于:如果限流器的阀值已经达到上限后,不开启新导入任务,进行限流操作,保障系统的平稳运行。

5.一种百万级别excel数据快速平稳导入系统,其特征在于:检查线路会自动进入等待状态,每隔一段时间,会重试步骤1,直到成功为止。

6.一种百万级别excel数据快速平稳导入系统,其特征在于:如果限流器的阀值没有达到上限,导入线程会从数据队列池中从获取一个数据队列,然后开始进行批量写入数据库的操作,同时限流器中的计数器自动加1。

说明书 :

一种百万级别excel数据快速平稳导入系统

技术领域

[0001] 本发明涉及excel数据技术领域,具体为一种百万级别excel数据快速平稳导入系统。

背景技术

[0002] 目前市面上excel数据导入的方式,大多数都是采用单线程同步阻塞的方式导入数据,导入百万级别的excel数据时,会发现导入数据的速度会非常的慢,在导入excel数据,往往采用把全部的数据到内存中,如果将百万级别的excel数据导入到系统中,很容易造成系统的内存溢出,无法支持百万级别的数据导入的业务需求,当业务高峰期,瞬间有大量的excel数据往系统中导入,导致数据库的写操作的数量成几何的增长,对数据库的造成的巨大的压力,严重时可能会拖垮整个数据库,从而影响业务的正常运行。

发明内容

[0003] (一)解决的技术问题
[0004] 针对上述背景技术提出的不足,本发明提供了一种百万级别excel数据快速平稳导入系统,通过通过采用读取数据和写入数据两大步骤彻底解耦,并行执行,大大提高读取和写入的速度,同时在数据库层面引入限流组件,控制写入数据库的并发数量,确保在业务高峰期时,写入数据库的并发数量在一个可控制的阀值之内,从而使系统始终处于高可用的状态,解决了上述背景技术提出的问题。
[0005] (二)技术系统
[0006] 本发明提供如下技术系统:基于本文提到的一种百万级别excel数据快速平稳导入系统,包括以下操作步骤
[0007] 第一步:开始读取数据,加载excel的文件后,采用逐行读取数据的方式,避免把数据全部加载到内存中,从而造成系统的内存溢出,然后对数据进行清洗处理;
[0008] 第二步:把处理后的数据加入数据队列中,然后重复循环1,2两步,直到当前的数据队列数量达到上限。
[0009] 第三步:判断数据队列中的数据是否达到上限,如果达到上限把这个数据队列放入数据队列池中,然后创建新的数据队列用于接收新的数据,然后重复1,2,3步骤。
[0010] 优选的,基于本文提到的一种百万级excel数据快速平稳导入系统。
[0011] 优选的,在开始导入数据时,首先系统会检查限流器的阀值,是否达到上限。
[0012] 优选的,如果限流器的阀值已经达到上限后,不开启新导入任务,进行限流操作,保障系统的平稳运行。
[0013] 优选的,检查线路会自动进入等待状态,每隔一段时间,会重试步骤1,直到成功为止。
[0014] 优选的,如果限流器的阀值没有达到上限,导入线程会从数据队列池中从获取一个数据队列,然后开始进行批量写入数据库的操作,同时限流器中的计数器自动加1。
[0015] (三)有益效果
[0016] 与现有技术相比,本发明提供了一种百万级别excel数据快速平稳导入系统,具备以下有益效果:
[0017] 1、该百万级别excel数据快速平稳导入系统,通过采用读写分离,一个线程队列负责读取数据,处理数据,然后放入数据队列池中,同时另外一个线程队列负责从数据队列池中获取数据,多线程同时把数据写入数据库,使这个两个步骤不再同步执行,相互等待,同时对数据进行分批导入,不会随着excel的内容增加而影响导入的速度,同时还支持多线程把数据写入数据库中,大大提高导入的速度,从而使导入的速度始终保持在一个相对恒定的速度的范围值之内。
[0018] 2、该百万级别excel数据快速平稳导入系统,通过优化解析excel的读取数据的方式,由全量解析改成逐行解析,避免了因excel的数据量过大,从而导致系统的内存溢出的情况。
[0019] 3、该百万级别excel数据快速平稳导入系统,通过采用读取数据和写入数据两大步骤彻底解耦,并行执行,大大提高读取和写入的速度,同时在数据库层面引入限流组件,控制写入数据库的并发数量,确保在业务高峰期时,写入数据库的并发数量在一个可控制的阀值之内,从而使系统始终处于高可用的状态。

附图说明

[0020] 图1为本发明结构读取数据示意图;
[0021] 图2为本发明结构写入数据库示意图。

具体实施方式

[0022] 下面将结合本发明实施例中的附图,对本发明实施例中的技术系统进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023] 如图1-2所示,一种百万级别excel数据快速平稳导入系统,包括以下操作步骤[0024] 第一步:开始读取数据,加载excel的文件后,采用逐行读取数据的方式,避免把数据全部加载到内存中,从而造成系统的内存溢出,然后对数据进行清洗处理;
[0025] 第二步:把处理后的数据加入数据队列中,然后重复循环1,2两步,直到当前的数据队列数量达到上限。
[0026] 第三步:判断数据队列中的数据是否达到上限,如果达到上限把这个数据队列放入数据队列池中,然后创建新的数据队列用于接收新的数据,然后重复1,2,3步骤,基于本文提到的一种百万级excel数据快速平稳导入系统,在开始导入数据时,首先系统会检查限流器的阀值,是否达到上限,如果限流器的阀值已经达到上限后,不开启新导入任务,进行限流操作,保障系统的平稳运行,检查线路会自动进入等待状态,每隔一段时间,会重试步骤1,直到成功为止,如果限流器的阀值没有达到上限,导入线程会从数据队列池中从获取一个数据队列,然后开始进行批量写入数据库的操作,同时限流器中的计数器自动加1。
[0027] 具体实施方式:通过采用读写分离,一个线程队列负责读取数据,处理数据,然后放入数据队列池中,同时另外一个线程队列负责从数据队列池中获取数据,多线程同时把数据写入数据库,使这个两个步骤不再同步执行,相互等待,同时对数据进行分批导入,不会随着excel的内容增加而影响导入的速度,同时还支持多线程把数据写入数据库中,大大提高导入的速度,从而使导入的速度始终保持在一个相对恒定的速度的范围值之内;通过优化解析excel的读取数据的方式,由全量解析改成逐行解析,避免了因excel的数据量过大,从而导致系统的内存溢出的情况;通过采用读取数据和写入数据两大步骤彻底解耦,并行执行,大大提高读取和写入的速度,同时在数据库层面引入限流组件,控制写入数据库的并发数量,确保在业务高峰期时,写入数据库的并发数量在一个可控制的阀值之内,从而使系统始终处于高可用的状态。
[0028] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0029] 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。