CN115203304A - 一种基于定时轮询的批量数据导入方法及相关设备 - Google Patents
一种基于定时轮询的批量数据导入方法及相关设备 Download PDFInfo
- Publication number
- CN115203304A CN115203304A CN202210834520.7A CN202210834520A CN115203304A CN 115203304 A CN115203304 A CN 115203304A CN 202210834520 A CN202210834520 A CN 202210834520A CN 115203304 A CN115203304 A CN 115203304A
- Authority
- CN
- China
- Prior art keywords
- import
- progress
- data
- file
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
Abstract
本申请实施例属于数据处理技术领域,涉及一种基于定时轮询的批量数据导入方法及相关设备,包括根据客户端发送的导入请求获取导入文件;基于导入文件生成导入事件,并获得导入事件对应的导入进度参数;响应于导入事件,将导入文件导入目标数据库,并根据导入文件的导入进度更新导入进度参数,将导入进度参数存入进度数据库;接收客户端发送的定时查询请求,根据定时查询请求从进度数据库获取导入进度参数返回至客户端;导入完成后,根据接收到的客户端发送的导入结果获取请求,将导入结果发送至客户端。此外,本申请还涉及区块链技术,导入文件可存储于区块链中。本申请可以定时获取导入文件的导入进度,根据导入结果可以获知导入数据是否成功。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于定时轮询的批量数据导入方法及相关设备。
背景技术
随着科技的发展,各企业的互联网架构日益庞大,Excel数据处理已经成为从事互联网研发业务单元不可避免的部分,随着计算机和信息技术的迅猛发展和普及应用,行业应用系统的规模迅速扩大,行业应用所产生的数据呈爆炸性增长。在数据量极大的情况下,将业务需要的Excel数据导入数据平台的技术、方法和手段已经成为现实世界的迫切需求。
传统的Excel数据批量导入方式一般分为同步和异步两种方式,其中同步导入对导入数量有限制,当导入的数据量过于多时,后台会耗费很长时间,导致出现报错、网关超时的情况,需要分批导入;而纯粹的异步导入方式,后台在执行导入命令后,无法获得导入数据的导入进度,且无法把导入结果返回给前端,导致用户无法获知导入数据是否成功,也无法在第一时间得到导入完成的消息反馈。
发明内容
本申请实施例的目的在于提出一种基于定时轮询的批量数据导入方法及相关设备,以解决相关技术中大批量数据导入时无法获得导入数据的导入进度,且容易出现导入失败,同时,无法获知数据导入情况的技术问题。
为了解决上述技术问题,本申请实施例提供一种基于定时轮询的批量数据导入方法,采用了如下所述的技术方案:
接收客户端发送的导入请求,根据所述导入请求获取导入文件;
基于所述导入文件生成导入事件,并获得所述导入事件对应的导入进度参数;
响应于所述导入事件,将所述导入文件导入目标数据库,并根据所述导入文件的导入进度更新所述导入进度参数,将所述导入进度参数存入进度数据库;
接收所述客户端发送的定时查询请求,根据所述定时查询请求从所述进度数据库获取所述导入进度参数,并根据所述导入进度参数获得导入进度返回至所述客户端;
导入完成后,根据接收到的所述客户端发送的导入结果获取请求,获得导入结果并发送至所述客户端。
进一步的,所述将所述导入文件导入目标数据库的步骤包括:
解析所述导入文件,获得待导入数据,并将所述待导入数据添加至任务队列;
开启导入线程,从所述任务队列中依次取出所述待导入数据,将所述待导入数据写入所述目标数据库。
进一步的,所述根据所述导入文件的导入进度更新所述导入进度参数,将所述导入进度参数存入进度数据库的步骤包括:
对所述待导入数据从所述任务队列中的取出进度进行监控,根据预设的进度计算方式计算得到导入进度;
基于所述导入进度更新导入进度参数,并将所述导入进度参数写入所述进度数据库。
进一步的,所述对所述待导入数据从所述任务队列中的取出进度进行监控,根据预设的计算进度计算得到导入进度的步骤包括:
从所述任务队列中取出待导入数据,将所述待导入数据写入所述目标数据库,并对所述待导入数据进行标记,得到标记数据;
将所述标记数据添加至预设表格中,得到落表数据;
计算所述落表数据占全部所述待导入数据的比例,得到落表数据比例;
根据所述落表数据比例计算出落表进度,将所述落表进度作为导入进度。
进一步的,所述解析所述导入文件,获得待导入数据的步骤包括:
对所述导入文件进行解析,得到文件对象;
提取所述文件对象中包含的对象数据,得到待导入数据。
进一步的,在所述开启导入线程,从所述任务队列中依次取出所述待导入数据的步骤之前还包括:
调度线程池监听所述任务队列;
确定所述线程池中有空闲线程,则开启一个线程作为导入线程。
进一步的,在所述将导入结果发送至所述客户端的步骤之后还包括:
当导入失败时,接收所述客户端发送的导入失败查看请求;
根据所述查看请求获取导入异常数据,将所述导入异常数据发送至所述客户端。
为了解决上述技术问题,本申请实施例还提供一种基于定时轮询的批量数据导入装置,采用了如下所述的技术方案:
获取模块,用于接收客户端发送的导入请求,根据所述导入请求获取导入文件;
生成模块,用于基于所述导入文件生成导入事件,并获得所述导入事件对应的导入进度参数;
导入模块,用于响应于所述导入事件,将所述导入文件导入目标数据库,并根据所述导入文件的导入进度更新所述导入进度参数,将所述导入进度参数存入进度数据库;
查询模块,用于接收所述客户端发送的定时查询请求,根据所述定时查询请求从所述进度数据库获取所述导入进度参数,并根据所述导入进度参数获得导入进度返回至所述客户端;
反馈模块,用于导入完成后,根据接收到的所述客户端发送的导入结果获取请求,获得导入结果并发送至所述客户端。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
该计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上所述的基于定时轮询的批量数据导入方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上所述的基于定时轮询的批量数据导入方法的步骤。
与现有技术相比,本申请实施例主要有以下有益效果:
本申请通过接收客户端发送的导入请求,根据导入请求获取导入文件;基于导入文件生成导入事件,并获得导入事件对应的导入进度参数;响应于导入事件,将导入文件导入目标数据库,并根据导入文件的导入进度更新导入进度参数,将导入进度参数存入进度数据库;接收客户端发送的定时查询请求,根据定时查询请求从进度数据库获取导入进度参数,并根据导入进度参数获得导入进度返回至客户端;导入完成后,根据接收到的客户端发送的导入结果获取请求,获得导入结果并发送至客户端;本申请通过客户端对导入进度进行定时查询,可以避免由于一次导入过多数据导致后台服务端接口超时,提高导入的成功率,通过客户端定时向服务端获取导入进度,可以定时获取导入文件的导入进度,同时,根据导入结果可以获知导入数据是否成功。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的基于定时轮询的批量数据导入方法的一个实施例的流程图;
图3是根据本申请的基于定时轮询的批量数据导入装置的一个实施例的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请提供了一种基于定时轮询的批量数据导入方法,可以应用于如图1所示的系统架构100中,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的基于定时轮询的批量数据导入方法一般由服务器执行,相应地,基于定时轮询的批量数据导入装置一般设置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的基于定时轮询的批量数据导入方法的一个实施例的流程图,包括以下步骤:
步骤S201,接收客户端发送的导入请求,根据导入请求获取导入文件。
当需要进行导入的表格数据量较大时,需要将表格数据导入到数据库中进行保存,以便后续对这些数据进行操作。
在本实施例中,导入文件为Excel文件,其中,Excel文件指Microsoft Excel,是一款电子表格软件。具体地,将数据保存至Excel文件,通过将Excel文件上传的方式进行数据导入。
在本实施例中,客户端向服务端发送导入请求,服务端接收来自客户端的导入请求后,调用预先设置好的文件导入接口,接收导入请求中包含的导入文件,其中,预先设置好的文件导入接口可以为Multipart File接口,通过Multipart File接口接收并解析导入文件中包含的二进制数据和该导入文件的文件名称。
需要强调的是,为进一步保证导入文件的私密和安全性,上述导入文件还可以存储于一区块链的节点中。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
步骤S202,基于导入文件生成导入事件,并获得导入事件对应的导入进度参数。
在本实施例中,导入事件可以通过事件生成器进行生成,事件生成器根据上述解析得到的二进制数据和导入文件的文件名称等信息生成导入事件,相应的,获得与导入事件对应的导入进度参数,其中,导入进度参数可以是预先配置的,也可以是异步框架在发布导入事件的同时生成的。
其中,异步框架可以实现异步编程,可以让程序中的一个工作单元与主应用程序线程分开独立运行,并且在工作单元运行结束后,会通知主应用程序线程它的运行结果或者失败原因。
步骤S203,响应于导入事件,将导入文件导入目标数据库,并根据导入文件的导入进度更新导入进度参数,将导入进度参数存入进度数据库。
在本实施例中,响应于导入事件,通过预设的导入方法将导入文件导入目标数据库。具体地,导入方法中预先构建有异步框架的监听线程,通过监听线程对导入事件进行监听,在导入事件发布后,监听线程监听到发布的导入事件后,将导入文件导入至目标数据库。
目标数据库为存储导入文件数据的文件数据库,可以是预先创建的,也可以是服务端的数据库,在此不做限制。
需要说明的是,在服务端将导入文件导入数据库的同时,会向客户端发送正在导入通知,例如,“正在导入数据,请耐心等待”,以提示用户导入进度。
在本实施例中,进度数据库为Redis数据库,Redis(Remote Dictionary Server),为远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。导入进度参数以键值对形式存储至Redis数据库中。
具体地,导入进度参数的键名为isFinished,键值为0或1,其中,0表示正在导入数据,1表示导入完成,在服务端向客户端发送正在导入通知的同时,将对应的导入进度参数isFinished=0存入Redis数据库,当导入完成,更新Redis数据库中的导入进度参数为isFinished=1。
在本实施例中,导入进度参数可以通过redisTemplate.opsForValue方法进行键入存储。
步骤S204,接收客户端发送的定时查询请求,根据定时查询请求从进度数据库获取导入进度参数,并根据导入进度参数获得导入进度返回至客户端。
在数据导入目标数据库过程中,客户端会定时轮询,每隔预设时间段向服务端发送定时查询请求,服务端根据定时查询请求从Redis数据库中获取导入进度参数,根据导入进度参数确定导入进度,并将导入进度返回至客户端,以供用户实时获知导入进度。
客户端可以配置定时器,通过定时器配置定时时间,定时向服务端进行定时轮询,具体地,客户端通过window.setlnterval定时轮询,每隔预设时间段,例如10s,向服务端请求查询isFinished的值,若isFinished的值为0,表示正在导入,若isFinished的值为1,则表示导入完成。
在本实施例中,setInterval需要结合setTimeout使用,因为单纯使用setInterval会导致页面卡死,在使用setInterval时,通过setTimeout清除定时器队列,可以避免卡死网页。
需要说明的是,每隔一段时间请求一次服务端接口刷新数据,可以避免接口长时间无响应,造成网关超时,造成数据导入失败。
步骤S205,导入完成后,根据接收到的客户端发送的导入结果获取请求,获得导入结果并发送至客户端。
在本实施例中,客户端根据接收到的导入进度确定导入完成后,向服务端发送导入结果获取请求,服务端根据导入结果获取请求将导入结果返回至客户端,其中,导入结果包括导入成功条数和导入失败条数。
客户端接收到服务端返回的导入结果后,可以通过弹框提示“导入完成,成功X条/失败Y条”,这样,用户可以清楚地知道数据导入情况。
本申请通过客户端对导入进度进行定时查询,可以避免由于一次导入过多数据导致后台服务端接口超时,提高导入的成功率,通过客户端定时向服务端获取导入进度,可以定时获取导入文件的导入进度,同时,根据导入结果可以获知导入数据是否成功。
在本实施例的一些可选的实现方式中,上述将导入文件导入目标数据库的步骤包括:
解析导入文件,获得待导入数据,并将待导入数据添加至任务队列;
开启导入线程,从任务队列中依次取出待导入数据,将待导入数据写入所述目标数据库。
在本实施例中,对导入文件进行解析,得到文件对象,提取文件对象中包含的对象数据,得到待导入数据。具体地,解析得到导入文件包含的表格对象(sheet对象),表格对象即为文件对象,基于表格对象可以得到对象数据,对象数据为表格中各单元格数据,包括列名称及对应的列文本数据和行名称及对应的行文本数据,列文本数据或行文本数据即为待导入数据。
将待导入数据按照行或列形式依次取出,添加至任务队列中,开启一个或多个单独的导入线程,执行待导入数据导入数据库的任务。
在本实施例中,将待导入数据放入任务队列依次导入数据库,可以提高导入效率。
在一些可选的实现方式中,在上述开启导入线程,从任务队列中依次取出待导入数据的步骤之前还包括:
调度线程池监听任务队列;
确定所述线程池中有空闲线程,则开启一个线程作为导入线程。
其中,调度线程池中线程数量为服务端CPU的核心数即可,调度线程池用于监听任务队列,当有空闲线程时,开启一个或多个独立的线程作为导入线程,用于处理文件导入的任务,导入线程从任务队列中依次取出待导入数据,将其写入目标数据库。
需要说明的是,可以开启一个空闲线程作为导入线程,也可以开启多个空闲线程作为导入线程。
需要说明的是,线程池能有效的控制线程的最大并发数,提高系统资源利用率,同时避免过多的资源竞争,避免堵塞,同时,能够多线程进行简单的管理,使线程的使用简单、高效。
在本实施例中,通过独立的导入线程执行数据导入任务,可以提高导入效率,避免其他操作影像数据导入,提高数据导入的成功率。
在一些可选的实现方式中,上述根据导入文件的导入进度更新导入进度参数,将导入进度参数存入进度数据库的步骤包括:
对待导入数据从任务队列中的取出进度进行监控,根据预设的计算进度计算得到导入进度;
基于导入进度更新导入进度参数,并将导入进度参数写入进度数据库。
在本实施例中,在生成导入事件并获得对应的导入进度参数后,生成进度监控异步线程,该进度监控异步线程对导入事件进行监听,据预设的计算进度计算得到导入进度,并根据导入进度更新导入进度参数,将导入进度参数写入Redis数据库中。
其中,计算进度为计算频率,可以通过进度监控异步线程根据预设的计算频率,每隔一定时间计算数据导入进度。导入进度为落表进度,落表进度表示将导入文件中的数据写入数据库中的进度。
在本实施例中,计算进度也可以是客户端每隔预设时间段发起定时轮询的时间间隔,即在客户端发送的定时查询请求的同时,服务端计算导入进度。
具体地,从任务队列中取出待导入数据,将待导入数据写入目标数据库,并对待导入数据进行标记,得到标记数据;将标记数据添加至预设表格中,得到落表数据;计算落表数据占全部待导入数据的比例,得到落表数据比例;根据落表数据比例计算出落表进度,将落表进度作为导入进度,根据导入进度更新Redis数据库中的导入进度参数。
本实施例中,通过监听并更新导入进度,在客户端定时轮询时,以便服务端向Redis数据库发送进度获取请求,从而获取最新的导入进度返回至客户端并进行展示。
在一些可选的实现方式中,在上述将导入结果发送至所述客户端的步骤之后还包括:
当导入失败时,接收客户端发送的导入失败查看请求;
根据查看请求获取导入异常数据,将导入异常数据发送至客户端。
在客户端接收到服务端返回的导入结果,如果导入结果中导入失败条数大于0,则向服务端发送导入失败查看请求,服务端根据接收到的导入失败查看请求,获得对应的导入异常数据,返回至客户端以供用户查看。
具体地,如果导入结果中导入失败条数大于0,则展示下载导入失败Excel表的入口按钮,客户端响应于入口按钮的点击操作,向服务端发送下载请求,服务端根据下载请求将导入失败Excel表返回至客户端进行展示,从导入失败Excel表中可以查看具体那些数据导入有问题,以及产生问题的原因,然后进行相应改正后重新导入对应的数据。
在本实施例中,通过查看导入异常数据,可以获知数据导入失败的原因。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图3,作为对上述图2所示方法的实现,本申请提供了一种基于定时轮询的批量数据导入装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例所述的基于定时轮询的批量数据导入装置300包括:获取模块301、生成模块302、导入模块303、查询模块304以及反馈模块305。其中:
获取模块301用于接收客户端发送的导入请求,根据所述导入请求获取导入文件;
生成模块302用于基于所述导入文件生成导入事件,并获得所述导入事件对应的导入进度参数;
导入模块303用于响应于所述导入事件,将所述导入文件导入目标数据库,并根据所述导入文件的导入进度更新所述导入进度参数,将所述导入进度参数存入进度数据库;
查询模块304用于接收所述客户端发送的定时查询请求,根据所述定时查询请求从所述进度数据库获取所述导入进度参数,并根据所述导入进度参数获得导入进度返回至所述客户端;
反馈模块305用于导入完成后,根据接收到的所述客户端发送的导入结果获取请求,获得导入结果并发送至所述客户端。
需要强调的是,为进一步保证导入文件的私密和安全性,上述导入文件还可以存储于一区块链的节点中。
基于上述基于定时轮询的批量数据导入装置,通过客户端对导入进度进行定时查询,可以避免由于一次导入过多数据导致后台服务端接口超时,提高导入的成功率,通过客户端定时向服务端获取导入进度,可以定时获取导入文件的导入进度,同时,根据导入结果可以获知导入数据是否成功。
在本实施例中,导入模块303包括解析子模块和导入子模块,解析子模块用于解析所述导入文件,获得待导入数据,并将所述待导入数据添加至任务队列;导入子模块用于开启导入线程,从所述任务队列中依次取出所述待导入数据,将所述待导入数据写入所述目标数据库。
在本实施例中,将待导入数据放入任务队列依次导入数据库,可以提高导入效率。
在一些可选的实现方式中,导入模块303包括更新子模块,其中,所述更新子模块包括计算单元和更新单元,计算单元用于对所述待导入数据从所述任务队列中的取出进度进行监控,根据预设的计算进度计算得到导入进度;更新单元用于基于所述导入进度更新导入进度参数,并将所述导入进度参数写入所述进度数据库。
在本实施例中,计算单元进一步用于:
从所述任务队列中取出待导入数据,将所述待导入数据写入所述目标数据库,并对所述待导入数据进行标记,得到标记数据;
将所述标记数据添加至预设表格中,得到落表数据;
计算所述落表数据占全部所述待导入数据的比例,得到落表数据比例;
根据所述落表数据比例计算出落表进度,将所述落表进度作为导入进度。
本实施例中,通过监听并更新导入进度,在客户端定时轮询时,以便服务端向Redis数据库发送进度获取请求,从而获取最新的导入进度返回至客户端并进行展示。
在本实施例中,解析子模块包括解析单元和提取单元,解析单元用于对所述导入文件进行解析,得到文件对象;提取单元用于提取所述文件对象中包含的对象数据,得到待导入数据。
在本实施例的一些可选的实现方式中,导入模块303还包括监听子模块和开启子模块,监听子模块用于调度线程池监听所述任务队列;开启子模块用于确定所述线程池中有空闲线程,则开启一个线程作为导入线程。
在本实施例中,通过独立的导入线程执行数据导入任务,可以提高导入效率,避免其他操作影像数据导入,提高数据导入的成功率。
在本实施例中,上述基于定时轮询的批量数据导入装置还包括查看模块,用于:
当导入失败时,接收所述客户端发送的导入失败查看请求;
根据所述查看请求获取导入异常数据,将所述导入异常数据发送至所述客户端。
在本实施例中,通过查看导入异常数据,可以获知数据导入失败的原因。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件41-43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如基于定时轮询的批量数据导入方法的计算机可读指令等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的计算机可读指令或者处理数据,例如运行所述基于定时轮询的批量数据导入方法的计算机可读指令。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
本实施例通过处理器执行存储在存储器的计算机可读指令时实现如上述实施例基于定时轮询的批量数据导入方法的步骤,通过客户端对导入进度进行定时查询,可以避免由于一次导入过多数据导致后台服务端接口超时,提高导入的成功率,通过客户端定时向服务端获取导入进度,可以定时获取导入文件的导入进度,同时,根据导入结果可以获知导入数据是否成功。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于定时轮询的批量数据导入方法的步骤,通过客户端对导入进度进行定时查询,可以避免由于一次导入过多数据导致后台服务端接口超时,提高导入的成功率,通过客户端定时向服务端获取导入进度,可以定时获取导入文件的导入进度,同时,根据导入结果可以获知导入数据是否成功。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种基于定时轮询的批量数据导入方法,其特征在于,包括下述步骤:
接收客户端发送的导入请求,根据所述导入请求获取导入文件;
基于所述导入文件生成导入事件,并获得所述导入事件对应的导入进度参数;
响应于所述导入事件,将所述导入文件导入目标数据库,并根据所述导入文件的导入进度更新所述导入进度参数,将所述导入进度参数存入进度数据库;
接收所述客户端发送的定时查询请求,根据所述定时查询请求从所述进度数据库获取所述导入进度参数,并根据所述导入进度参数获得导入进度返回至所述客户端;
导入完成后,根据接收到的所述客户端发送的导入结果获取请求,获得导入结果并发送至所述客户端。
2.根据权利要求1所述的基于定时轮询的批量数据导入方法,其特征在于,所述将所述导入文件导入目标数据库的步骤包括:
解析所述导入文件,获得待导入数据,并将所述待导入数据添加至任务队列;
开启导入线程,从所述任务队列中依次取出所述待导入数据,将所述待导入数据写入所述目标数据库。
3.根据权利要求2所述的基于定时轮询的批量数据导入方法,其特征在于,所述根据所述导入文件的导入进度更新所述导入进度参数,将所述导入进度参数存入进度数据库的步骤包括:
对所述待导入数据从所述任务队列中的取出进度进行监控,根据预设的计算进度计算得到导入进度;
基于所述导入进度更新导入进度参数,并将所述导入进度参数写入所述进度数据库。
4.根据权利要求3所述的基于定时轮询的批量数据导入方法,其特征在于,所述对所述待导入数据从所述任务队列中的取出进度进行监控,根据预设的计算进度计算得到导入进度的步骤包括:
从所述任务队列中取出待导入数据,将所述待导入数据写入所述目标数据库,并对所述待导入数据进行标记,得到标记数据;
将所述标记数据添加至预设表格中,得到落表数据;
计算所述落表数据占全部所述待导入数据的比例,得到落表数据比例;
根据所述落表数据比例计算出落表进度,将所述落表进度作为导入进度。
5.根据权利要求2所述的基于定时轮询的批量数据导入方法,其特征在于,所述解析所述导入文件,获得待导入数据的步骤包括:
对所述导入文件进行解析,得到文件对象;
提取所述文件对象中包含的对象数据,得到待导入数据。
6.根据权利要求2所述的基于定时轮询的批量数据导入方法,其特征在于,在所述开启导入线程,从所述任务队列中依次取出所述待导入数据的步骤之前还包括:
调度线程池监听所述任务队列;
确定所述线程池中有空闲线程,则开启一个线程作为导入线程。
7.根据权利要求1至6中任一项所述的基于定时轮询的批量数据导入方法,其特征在于,在所述将导入结果发送至所述客户端的步骤之后还包括:
当导入失败时,接收所述客户端发送的导入失败查看请求;
根据所述查看请求获取导入异常数据,将所述导入异常数据发送至所述客户端。
8.一种基于定时轮询的批量数据导入装置,其特征在于,包括:
获取模块,用于接收客户端发送的导入请求,根据所述导入请求获取导入文件;
生成模块,用于基于所述导入文件生成导入事件,并获得所述导入事件对应的导入进度参数;
导入模块,用于响应于所述导入事件,将所述导入文件导入目标数据库,并根据所述导入文件的导入进度更新所述导入进度参数,将所述导入进度参数存入进度数据库;
查询模块,用于接收所述客户端发送的定时查询请求,根据所述定时查询请求从所述进度数据库获取所述导入进度参数,并根据所述导入进度参数获得导入进度返回至所述客户端;
反馈模块,用于导入完成后,根据接收到的所述客户端发送的导入结果获取请求,获得导入结果并发送至所述客户端。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至7中任一项所述的基于定时轮询的批量数据导入方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的基于定时轮询的批量数据导入方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210834520.7A CN115203304A (zh) | 2022-07-14 | 2022-07-14 | 一种基于定时轮询的批量数据导入方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210834520.7A CN115203304A (zh) | 2022-07-14 | 2022-07-14 | 一种基于定时轮询的批量数据导入方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115203304A true CN115203304A (zh) | 2022-10-18 |
Family
ID=83581246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210834520.7A Pending CN115203304A (zh) | 2022-07-14 | 2022-07-14 | 一种基于定时轮询的批量数据导入方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115203304A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116126646A (zh) * | 2023-04-13 | 2023-05-16 | 紫金诚征信有限公司 | 一种确定批量数据执行进度的方法及装置 |
-
2022
- 2022-07-14 CN CN202210834520.7A patent/CN115203304A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116126646A (zh) * | 2023-04-13 | 2023-05-16 | 紫金诚征信有限公司 | 一种确定批量数据执行进度的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813516B (zh) | 资源管控方法、装置、计算机设备及存储介质 | |
CN111666490A (zh) | 基于kafka的信息推送方法、装置、设备及存储介质 | |
CN112162965B (zh) | 一种日志数据处理的方法、装置、计算机设备及存储介质 | |
CN112507027A (zh) | 基于Kafka的增量数据同步方法、装置、设备及介质 | |
CN111414407A (zh) | 数据库的数据查询方法、装置、计算机设备及存储介质 | |
CN113254445B (zh) | 实时数据存储方法、装置、计算机设备及存储介质 | |
CN110764798A (zh) | 一种微码升级方法、装置、计算机设备及存储介质 | |
CN112631910A (zh) | 前端测试方法、装置、计算机设备及存储介质 | |
CN112416458A (zh) | 基于ReactNative的预加载方法、装置、计算机设备及存储介质 | |
CN112631911A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN114564294A (zh) | 智能服务编排方法、装置、计算机设备及存储介质 | |
CN115203304A (zh) | 一种基于定时轮询的批量数据导入方法及相关设备 | |
CN113010542A (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN117114618A (zh) | 待办项跟进方法、系统、计算机设备及存储介质 | |
CN111813518A (zh) | 机器人预警方法、装置、计算机设备及存储介质 | |
CN114626352B (zh) | 报表自动化生成方法、装置、计算机设备及存储介质 | |
CN116431731A (zh) | 数据异步导出方法、装置、设备及其存储介质 | |
CN114615325A (zh) | 消息推送方法、装置、计算机设备及存储介质 | |
CN115712422A (zh) | 表单页面的生成方法、装置、计算机设备及存储介质 | |
CN115328764A (zh) | 基于自动化测试的测试代码优化方法及其相关设备 | |
CN112328381A (zh) | 启动任务执行顺序的决策方法、装置、计算机设备及介质 | |
CN112632192A (zh) | 节点维护方法、装置、计算机设备及介质 | |
CN112257004B (zh) | 备份页面的方法、装置、服务器及存储介质 | |
CN111327513B (zh) | 消息数据的推送方法、装置、计算机设备及存储介质 | |
CN114238466A (zh) | 一种消息推送方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |