一种数据导入方法、装置、设备及计算机可读存储介质

文档序号:7491 发布日期:2021-09-17 浏览:41次 英文

一种数据导入方法、装置、设备及计算机可读存储介质

技术领域

本发明涉及存储

技术领域

,特别是涉及一种数据导入方法、装置、设备及计算机可读存储介质。

背景技术

在产品开发、迭代的过程中,通常会遇到数据库迁移、转存等需求。大多数情况下该需求的数据量会十分庞大,比如十个字段的数据结构、一千万左右的数据量时,其转储文件容量可达到一个G以上,若通过传统的文件导入等方式进行数据导入存储,当需要进行数据导入时,生成一个容器,当数据导入完成之后,将容器丢弃。

当进行大数据量的导入工作时,仅数据导入工作其耗时往往以小时为单位。再加上容器生成丢弃过程,导致数据导入过程中产生过多的废弃容器,不断地进行容器生成,导致非导入工作产生的耗时长,导致单次导入拖延了其他工作。

综上所述,如何有效地解决非导入工作产生的耗时长,导致单次导入拖延了其他工作等问题,是目前本领域技术人员急需解决的问题。

发明内容

本发明的目的是提供一种数据导入方法,该方法较大地缩短了非导入工作产生的耗时,避免了对其他工作的影响;本发明的另一目的是提供一种数据导入装置、设备及计算机可读存储介质。

为解决上述技术问题,本发明提供如下技术方案:

一种数据导入方法,包括:

当接收到文件导入请求时,将待导入文件读取至链式阻塞队列中;

从容器回收器中请求得到容器集合,将所述待导入文件中包含的数据从所述链式阻塞队列分条载入所述容器集合的各目标容器内;

将每个目标容器作为一个导入任务进行数据导入操作;

判断各所述导入任务是否均执行完成;

若是,则利用所述容器回收器对各所述目标容器进行回收操作。

在本发明的一种

具体实施方式

中,将待导入文件读取至链式阻塞队列中,包括:

获取所述待导入文件的文件大小信息;

根据所述文件大小信息确定文件读取模式;

按照所述文件读取模式将所述待导入文件读取至所述链式阻塞队列中。

在本发明的一种具体实施方式中,当确定所述文件读取模式为分割读取模式时,在按照所述文件读取模式将所述待导入文件读取至所述链式阻塞队列中之前,还包括:

对所述待导入文件进行分割操作,得到各子文件;

将各所述子文件保存至预置的第一临时文件夹中;

按照所述文件读取模式将所述待导入文件读取至所述链式阻塞队列中,包括:

通过对各所述子文件依次读取的方式将所述待导入文件读取至所述链式阻塞队列中;

并将读取完成的子文件转移至预置的第二临时文件夹中。

在本发明的一种具体实施方式中,从容器回收器中请求得到容器集合,将所述待导入文件中包含的数据从所述链式阻塞队列分条载入所述容器集合的各目标容器内,包括:

判断所述容器回收器中是否存在可用容器;

若是,则从所述容器回收器中进行容器请求操作,得到相应的目标容器;

将相应的子文件中包含的数据从所述链式阻塞队列载入所述目标容器内;

若否,则进行阻塞等待,并按照预置时间间隔重复执行所述判断所述容器回收器中是否存在可用容器的步骤。

在本发明的一种具体实施方式中,还包括:

当阻塞等待时长超过预设时长时,输出超时异常提示信息。

在本发明的一种具体实施方式中,将每个目标容器作为一个导入任务进行数据导入操作,包括:

从线程池中分别为各所述目标容器调取相应的线程;

利用各所述线程分别将每个目标容器作为一个导入任务进行数据并行导入操作。

一种数据导入装置,包括:

文件读取模块,用于当接收到文件导入请求时,将待导入文件读取至链式阻塞队列中;

数据载入模块,用于从容器回收器中请求得到容器集合,将所述待导入文件中包含的数据从所述链式阻塞队列分条载入所述容器集合的各目标容器内;

数据导入模块,用于将每个目标容器作为一个导入任务进行数据导入操作;

判断模块,用于判断各所述导入任务是否均执行完成;

容器回收模块,用于当确定各所述导入任务均执行完成时,利用所述容器回收器对各所述目标容器进行回收操作。

在本发明的一种具体实施方式中,所述文件读取模块包括:

文件大小获取子模块,用于获取所述待导入文件的文件大小信息;

读取模式确定子模块,用于根据所述文件大小信息确定文件读取模式;

文件读取子模块,用于按照所述文件读取模式将所述待导入文件读取至所述链式阻塞队列中。

一种数据导入设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如前所述数据导入方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述数据导入方法的步骤。

本发明所提供的数据导入方法,当接收到文件导入请求时,将待导入文件读取至链式阻塞队列中;从容器回收器中请求得到容器集合,将待导入文件中包含的数据从链式阻塞队列分条载入容器集合的各目标容器内;将每个目标容器作为一个导入任务进行数据导入操作;判断各导入任务是否均执行完成;若是,则利用容器回收器对各目标容器进行回收操作。

通过设置容器回收器,当需要对待导入文件进行导入操作时,从容器回收器中进行容器请求,将链式阻塞队列中暂存的待导入文件中包含的数据分条载入各目标容器。分别将每个目标容器作为一个导入任务进行数据导入操作,当导入任务完成之后,利用容器回收器进行容器回收操作。不需要进行不断地容器生成和容器丢弃操作,提高了数据导入效率,较大地缩短了非导入工作产生的耗时,避免了对其他工作的影响。

相应的,本发明还提供了与上述数据导入方法相对应的数据导入装置、设备和计算机可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中数据导入方法的一种实施流程图;

图2为本发明实施例中数据导入方法的另一种实施流程图;

图3为本发明实施例中一种数据导入装置的结构框图;

图4为本发明实施例中一种数据导入设备的结构框图;

图5为本实施例提供的一种数据导入设备的具体结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1为本发明实施例中数据导入方法的一种实施流程图,该方法可以包括以下步骤:

S101:当接收到文件导入请求时,将待导入文件读取至链式阻塞队列中。

预先设置链式阻塞队列ArrayBlockingQueue,将链式阻塞队列作为数据导入的通道。当接收到文件导入请求时,将待导入文件读取至链式阻塞队列中。

文件导入请求可以为将文件中包含的数据从一个数据库导入至另一个数据库的请求。

S102:从容器回收器中请求得到容器集合,将待导入文件中包含的数据从链式阻塞队列分条载入容器集合的各目标容器内。

预先设置容器回收器,用于容器的发放与回收。在程序启动时,可以进行容器回收器初始化,得到若干个容器,为导入任务提供容器。在将待导入文件读取至链式阻塞队列之后,从容器回收器中请求得到容器集合,将待导入文件中包含的数据从链式阻塞队列分条载入容器集合的各目标容器内。如可以根据待导入文件的文件大小,确定对待导入文件是一次性导入还是分块导入,当确定为分块导入时,依次进行容器请求,并将相应的数据载入相应的目标容器内。

S103:将每个目标容器作为一个导入任务进行数据导入操作。

在将待导入文件中包含的数据从链式阻塞队列分条载入容器集合的各目标容器内之后,将每个目标容器作为一个导入任务进行数据导入操作。从而实现对容器回收器中各容器的有效利用。

S104:判断各导入任务是否均执行完成,若是,则执行步骤S105,若否,则不做处理。

在将每个目标容器作为一个导入任务进行数据导入操作之后,判断各导入任务是否均执行完成,若是,则说明对待导入文件均导入完成,执行步骤S105,若否,则说明待导入文件中仍存在未导入的数据,不做处理。

S105:利用容器回收器对各目标容器进行回收操作。

当确定各导入任务均执行完成时,说明对待导入文件均导入完成,即本次对各目标容器利用完毕,利用容器回收器对各目标容器进行回收操作。通过设置容器回收器对导入任务生成及执行中使用的容器管理,避免了在数据导入过程中产生过多的废弃容器,通过该容器管理机制使得数据导入时装载数据的容器可以重复利用,减少了非导入工作产生的耗时。在执行完一次导入任务后回收容器实现容器循环。在一定程度上保证大数据量导入过程可控、可恢复的前提下,实现数据快速高效导入。

通过设置容器回收器,当需要对待导入文件进行导入操作时,从容器回收器中进行容器请求,将链式阻塞队列中暂存的待导入文件中包含的数据分条载入各目标容器。分别将每个目标容器作为一个导入任务进行数据导入操作,当导入任务完成之后,利用容器回收器进行容器回收操作。不需要进行不断地容器生成和容器丢弃操作,提高了数据导入效率,较大地缩短了非导入工作产生的耗时,避免了对其他工作的影响。

需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。

参见图2,图2为本发明实施例中数据导入方法的另一种实施流程图,该方法可以包括以下步骤:

S201:当接收到文件导入请求时,获取待导入文件的文件大小信息。

不同的导入任务对应的待导入文件的文件大小不同。当接收到文件导入请求时,获取待导入文件的文件大小信息。

S202:根据文件大小信息确定文件读取模式。

预先设置不同的文件大小对应不同的文件读取模式,如可以预设设置文件大小阈值,当待导入文件的文件大小大于文件大小阈值时,对应于分割读取模式;当待导入文件的文件大小小于等于文件大小阈值时,对应于一次性读取模式。当获取到待导入文件的文件大小信息之后,根据文件大小信息确定文件读取模式。

S203:对待导入文件进行分割操作,得到各子文件。

当待导入文件的文件大小大于文件大小阈值时,确定对应于分割读取模式时,对待导入文件进行分割操作,得到各子文件。

S204:将各子文件保存至预置的第一临时文件夹中。

预先设置第一临时文件夹wait,在得到各子文件之后,将各子文件保存至预置的第一临时文件夹中。

S205:通过对各子文件依次读取的方式将待导入文件读取至链式阻塞队列中。

在将各子文件保存至预置的第一临时文件夹中之后,通过对各子文件依次读取的方式将待导入文件读取至链式阻塞队列中,从而实现对待导入文件的分块读取。

S206:将读取完成的子文件转移至预置的第二临时文件夹中。

预先设置第二临时文件夹loaded,在通过对各子文件依次读取的方式将待导入文件读取至链式阻塞队列中之后,将读取完成的子文件转移至预置的第二临时文件夹中。通过对未读取的子文件与已读取的子文件进行区别存储,当出现系统崩溃、重启、异常时,重新启动程序可以实现节点继续导入,而不必从头再导入一次。

需要说明的是,第一临时文件夹与第二临时文件夹中的第一、第二并无先后顺序之分,仅是为了将已读取的子文件和未读取的子文件进行区别存储。

S207:判断容器回收器中是否存在可用容器,若否,则执行步骤S208,若是,则执行步骤S209。

在通过对各子文件依次读取的方式将待导入文件读取至链式阻塞队列中之后,判断容器回收器中是否存在可用容器,若否,则执行步骤S208,若是,则执行步骤S209。

S208:进行阻塞等待,并按照预置时间间隔重复执行步骤S207。

预先设置当确定容器回收器中不存在可用容器时从容器回收器中请求容器的时间间隔,进行阻塞等待,并按照预置时间间隔重复执行步骤S207。

需要说明的是,预置时间间隔可以根据实际情况进行设定和调整,本发明实施例对此不做限定。

在本发明的一种具体实施方式中,该方法还可以包括以下步骤:

当阻塞等待时长超过预设时长时,输出超时异常提示信息。

当确定阻塞等待时长超过预设时长时,说明系统可能存在异常,输出超时异常提示信息,从而方便运维人员及时进行异常处理。

S209:从容器回收器中进行容器请求操作,得到相应的目标容器。

当确定容器回收器中存在可用容器时,从容器回收器中进行容器请求操作,得到相应的目标容器。

S210:将相应的子文件中包含的数据从链式阻塞队列载入目标容器内。

在得到目标容器之后,将相应的子文件中包含的数据从链式阻塞队列载入目标容器内。如按照各子文件在待导入文件中的拼接顺序,依次请求各目标容器,将各子文件载入相应的目标容器中。

S211:从线程池中分别为各目标容器调取相应的线程。

预先部署有包含多个线程的线程池,在将相应的子文件中包含的数据从链式阻塞队列载入目标容器内之后,从线程池中分别为各目标容器调取相应的线程。除此之外,还可以设置有与数据库连接所需的连接池,利用连接池中的数据库连接与线程池中的线程配合完成各目标容器中数据的导入工作。

S212:利用各线程分别将每个目标容器作为一个导入任务进行数据并行导入操作。

在分别为各目标容器调取相应的线程之后,利用各线程分别将每个目标容器作为一个导入任务进行数据并行导入操作。通过利用线程池中各线程对数据进行并行导入,较大地提升了数据导入效率,降低了数据导入耗时。

S213:判断各导入任务是否均执行完成,若是,则执行步骤S214,若否,则不做处理。

S214:利用容器回收器对各目标容器进行回收操作。

相应于上面的方法实施例,本发明还提供了一种数据导入装置,下文描述的数据导入装置与上文描述的数据导入方法可相互对应参照。

参见图3,图3为本发明实施例中一种数据导入装置的结构框图,该装置可以包括:

文件读取模块31,用于当接收到文件导入请求时,将待导入文件读取至链式阻塞队列中;

数据载入模块32,用于从容器回收器中请求得到容器集合,将待导入文件中包含的数据从链式阻塞队列分条载入容器集合的各目标容器内;

数据导入模块33,用于将每个目标容器作为一个导入任务进行数据导入操作;

判断模块34,用于判断各导入任务是否均执行完成;

容器回收模块35,用于当确定各导入任务均执行完成时,利用容器回收器对各目标容器进行回收操作。

通过设置容器回收器,当需要对待导入文件进行导入操作时,从容器回收器中进行容器请求,将链式阻塞队列中暂存的待导入文件中包含的数据分条载入各目标容器。分别将每个目标容器作为一个导入任务进行数据导入操作,当导入任务完成之后,利用容器回收器进行容器回收操作。不需要进行不断地容器生成和容器丢弃操作,提高了数据导入效率,较大地缩短了非导入工作产生的耗时,避免了对其他工作的影响。

在本发明的一种具体实施方式中,文件读取模块31包括:

文件大小获取子模块,用于获取待导入文件的文件大小信息;

读取模式确定子模块,用于根据文件大小信息确定文件读取模式;

文件读取子模块,用于按照文件读取模式将待导入文件读取至链式阻塞队列中。

在本发明的一种具体实施方式中,该装置还可以包括:

文件分割模块,用于当确定文件读取模式为分割读取模式时,在按照文件读取模式将待导入文件读取至链式阻塞队列中之前,对待导入文件进行分割操作,得到各子文件;

文件保存模块,用于将各子文件保存至预置的第一临时文件夹中;

文件读取子模块具体为通过对各子文件依次读取的方式将待导入文件读取至链式阻塞队列中;并将读取完成的子文件转移至预置的第二临时文件夹中的模块。

在本发明的一种具体实施方式中,数据载入模块32包括:

判断子模块,用于判断容器回收器中是否存在可用容器;

容器请求子模块,用于当确定容器回收器中存在可用容器时,从容器回收器中进行容器请求操作,得到相应的目标容器;

数据载入子模块,用于将相应的子文件中包含的数据从链式阻塞队列载入目标容器内;

阻塞等待子模块,用于当确定容器回收器中不存在可用容器时,进行阻塞等待,并按照预置时间间隔重复执行判断容器回收器中是否存在可用容器的步骤。

在本发明的一种具体实施方式中,该装置还可以包括:

信息输出模块,用于当阻塞等待时长超过预设时长时,输出超时异常提示信息。

在本发明的一种具体实施方式中,数据导入模块33包括:

线程调取子模块,用于从线程池中分别为各目标容器调取相应的线程;

数据导入子模块,用于利用各线程分别将每个目标容器作为一个导入任务进行数据并行导入操作。

相应于上面的方法实施例,参见图4,图4为本发明所提供的数据导入设备的示意图,该设备可以包括:

存储器332,用于存储计算机程序;

处理器322,用于执行计算机程序时实现上述方法实施例的数据导入方法的步骤。

具体的,请参考图5,图5为本实施例提供的一种数据导入设备的具体结构示意图,该数据导入设备可因配置或性能不同而产生比较大的差异,可以包括处理器(centralprocessing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,处理器322可以设置为与存储器332通信,在数据导入设备301上执行存储器332中的一系列指令操作。

数据导入设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。

上文所描述的数据导入方法中的步骤可以由数据导入设备的结构实现。

相应于上面的方法实施例,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:

当接收到文件导入请求时,将待导入文件读取至链式阻塞队列中;从容器回收器中请求得到容器集合,将待导入文件中包含的数据从链式阻塞队列分条载入容器集合的各目标容器内;将每个目标容器作为一个导入任务进行数据导入操作;判断各导入任务是否均执行完成;若是,则利用容器回收器对各目标容器进行回收操作。

该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

对于本发明提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:私有目录文件的导出方法、装置、电子设备和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!