B/S架构下异步大数据量数据导入方法、系统、介质及设备与流程

文档序号:32714062发布日期:2022-12-28 01:56阅读:55来源:国知局
B/S架构下异步大数据量数据导入方法、系统、介质及设备与流程
b/s架构下异步大数据量数据导入方法、系统、介质及设备
技术领域
1.本发明涉及数据通信以及数据处理领域,尤其涉及一种b/s架构下异步大数据量数据导入数据库并同步显示导入进度及状态的方法,具体为一种b/s架构下异步大数据量数据导入方法、系统、介质及设备。


背景技术:

2.随着互联网技术的发展普及,基于b/s架构的系统成为一种常用的系统架构模式。基于信息化和数字化的需要,经常需要将外部的或历史的数据导入系统。b/s架构下大数据量数据导入数据库时存在如下问题:
3.1、为了降低单次导入大量数据可能导致服务器资源耗尽的风险,需要将数据进行拆分,然后分批导入。
4.2、不能同步准确显示数据导入进度及状态。
5.3、由于部分问题数据导致整体数据导入失败。


技术实现要素:

6.为克服上述现有技术的不足,本发明提供一种b/s架构下异步大数据量数据导入方法、系统、介质及设备,用以解决上述至少一个技术问题。
7.根据本发明说明书的一方面,提供一种b/s架构下异步大数据量数据导入方法,包括:
8.s1,客户端发起数据导入请求,将待导入源数据文件上传至服务端,然后生成请求导入任务,并将任务加入后台任务列表;
9.s2,客户端与服务端建立websocket连接,并在服务端订阅redis中对应后台导入任务的“导入进度及状态频道”c1,用于同步接收并显示导入进度及导入状态;
10.s3,服务端根据s1中添加的后台任务列表信息,建立后台任务进行数据导入操作并同步记录和发布导入进度及导入状态信息;
11.s4,导入完成后,客户端获取导入状态,根据导入状态选择是否下载完整数据导入状态记录数据文件并进行后续处理。
12.上述技术方案提供一种b/s架构下异步大数据量数据导入数据库并同步显示导入进度及状态的方法,用于将系统平台外部大数据量数据导入系统平台数据库,并同步显示导入进度及状态、完整记录全部数据导入结果状态、提高数据导入效率。
13.作为进一步的技术方案,s1还包括:服务端在监听到数据导入请求后,对待导入文件的合法性进行判断,若合法,则将源数据文件写入服务端指定磁盘文件,然后生成请求导入任务,并将任务加入后台任务列表;若不合法,则当前数据导入请求结束。
14.作为进一步的技术方案,s2还包括:
15.客户端发起websocket连接请求,等与服务端的websocket连接建立后接收并同步显示导入进度及导入状态;
16.服务端主服务程序监听到客户端请求后建立websocket连接,并订阅redis中对应后台导入任务的“导入进度及状态频道”c1,当websocket服务端接收到“导入进度及状态频道”c1上发布的导入进度及状态消息时,通过websocket连接同步发送给客户端。
17.作为进一步的技术方案,s3还包括:
18.s301,服务器端启动后台数据导入任务,并初始化导入任务状态数据;
19.s302,调用redis服务接口,将初始任务状态数据写入redis数据库r2,同时向“导入进度及状态频道”c1发布任务已启动状态消息;
20.s303,调用redis服务接口,从“导入模板字典库”r1查询本任务对应的导入模板字典;
21.s304,根据s303的查询结果是否有对应的导入模板字典进行下一步操作,当判断结果为“是”则进入s306;
22.s306,从磁盘读取s103上传的源数据文件f1,获取数据总行数;
23.s307,从s306读取的源数据中取首行数据,记为heads;
24.s308,从s306读取的源数据中顺序取一行数据;
25.s309,对s308所取数据的每一列,以s307中对应heads值为字段名称,结合s303中导入模板字典对相应字段的描述进行数据有效性验证,如果该行数据全部字段都有效,则进入s310,否则进入s312;
26.s310,将s308所取数据,以s307中对应heads值为字段名称,结合s303中导入模板字典对相应字段的描述,组装生成数据库操作语句,然后连接数据库d1调用对应数据库服务接口;
27.s311,等待并接收s310的数据库服务接口调用返回结果;
28.s312,调用redis服务接口,将该任务的当前状态更新到任务状态数据r2,将该任务的当前进度及状态信息发布到“导入进度及状态频道”c1,将当前行导入结果状态顺序写入“导入结果状态记录文件”f2;
29.s313,判断当前导入行是否为最后一行,如果“是”则进入s314,否则进入s308,并重复s308及其后步骤;
30.s314,调用redis服务接口,将该任务结束状态更新到任务状态数据r2,将该任务的当前进度及状态信息发布到“导入进度及状态频道”c1,结束任务。
31.作为进一步的技术方案,s3还包括:当s304判断结果为“否”则进入s305;
32.s305,调用redis服务接口,更新redis数据库中的任务状态数据r2,同时向“导入进度及状态频道”c1发布任务执行失败及失败原因状态消息。
33.作为进一步的技术方案,s4还包括:
34.客户端发起获取导入请求结果请求;
35.服务端主服务程序监听到客户端请求,调用对应redis服务接口,从任务状态数据r2读取任务状态数据,并生成导入结果状态记录文件f2的url链接,返回给客户端,客户端根据需求选择是否下载导入结果状态记录文件f2,或者进行后续操作。
36.根据本发明说明书的一方面,还提供一种b/s架构下异步大数据量数据导入系统,包括:通过网络相互连接的客户端和服务端;所述客户端,用于发起数据导入请求,将待导入源数据文件上传至服务端,以及与服务端建立websocket连接,以同步接收并显示导入进
度及导入状态;所述服务端,用于接收客户端请求,生成请求导入任务,将任务加入后台任务列表,订阅redis中对应后台导入任务的“导入进度及状态频道”c1,根据添加的后台任务列表信息,建立后台任务进行数据导入操作,并同步记录和发布导入进度及导入状态信息;所述客户端,还用于导入完成后,获取导入状态,根据导入状态选择是否下载完整数据导入状态记录数据文件并进行后续处理。
37.根据本发明说明书的一方面,还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其中所述计算机程序被处理器执行时,实现所述的b/s架构下异步大数据量数据导入方法的步骤。
38.根据本发明说明书的一方面,还提供一种计算机设备,所述计算机设备包括处理器、存储器,以及存储在所述存储器上并可被所述处理器执行的计算机程序,其中所述计算机程序被所述处理器执行时,实现所述的b/s架构下异步大数据量数据导入方法的步骤。
39.与现有技术相比,本发明的有益效果在于:
40.(1)本发明基于b/s(浏览器/服务器)架构,将整个数据导入过程拆分为客户端同步上传待导入源数据文件并创建导入任务、客户端与服务端建立websocket连接用于接收并同步显示导入进度及导入状态、服务端建立后台任务进行数据导入操作并同步记录和发布导入进度及导入状态信息、导入完成后客户端根据导入状态选择是否下载完整数据导入状态记录数据文件并进行后续处理。本发明将系统平台外部大数据量数据导入系统平台数据库,并同步显示导入进度、完整记录导入结果状态、提高数据导入效率。
41.(2)本发明解决了b/s架构下大数据量数据导入数据库时,为了降低单次导入大量数据可能导致服务器资源耗尽的风险,需要将数据进行拆分然后分批导入的问题。
42.(3)本发明解决了b/s架构下数据导入时不能同步准确显示数据导入进度及状态的问题。
43.(4)本发明解决了b/s架构下数据导入时由于部分问题数据导致整体数据导入失败问题。
附图说明
44.图1为本发明实施例中系统架构示意框图。
45.图2为本发明实施例中数据导入的流程框图。
46.图3为本发明实施例中一个导入源数据与模板字典的实例图。
47.图4为本发明实施例中对应图3中数据导入结果状态记录文件实例图。
48.图5为根据本发明实施例的计算设备的结构示意图。
具体实施方式
49.以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述发实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
50.如图1所示,本发明提供一种b/s架构下异步大数据量数据导入方法,特别是异步大数据量数据导入数据库并同步显示导入进度及状态的方法。
51.所述方法主要涉及到客户端和服务端。客户端主要是指浏览器等能够处理web请求、websocket连接等的工具。服务端主要由主服务程序、数据库服务、redis服务、各种文件等构成,主服务程序提供web服务、websocket连接服务以及各种业务逻辑处理服务,数据库服务提供各种数据库操作接口服务,redis服务提供高速数据缓存服务,源数据文件、导入结果状态记录文件等各种文件用于辅助完成数据导入操作。
52.如图2-4所示,所述方法的具体实施例包括以下步骤:
53.s1,客户端发起数据导入请求,将待导入源数据文件上传至服务端,然后生成请求导入任务,并将任务加入后台任务列表;
54.s2,客户端与服务端建立websocket连接,并在服务端订阅redis中对应后台导入任务的“导入进度及状态频道”c1,用于同步接收并显示导入进度及导入状态;
55.s3,服务端根据s1中添加的后台任务列表信息,建立后台任务进行数据导入操作并同步记录和发布导入进度及导入状态信息;
56.s4,导入完成后,客户端根据导入状态选择下载完整数据导入状态记录数据文件并进行后续处理,例如筛选出导入失败数据人工修复后再导入等。
57.具体地,步骤s1的详细处理步骤:
58.s101,客户端发起数据导入请求;
59.s102,服务端主服务程序监听到客户端请求后判断文件类型、大小是否合法,如果不合法,返回错误信息,该数据导入请求结束;
60.s103,如果s102中判断文件合法则将源数据文件写入服务端指定磁盘文件f1中;
61.s104,生成请求导入任务,并将任务加入后台任务列表,然后返回;
62.具体地,步骤s2的详细处理步骤:
63.s201,客户端发起websocket连接请求,等与服务端的websocket连接建立后接收并同步显示导入进度及导入状态;
64.s202,服务端主服务程序监听到客户端请求后建立websocket连接,并订阅redis中对应后台导入任务的“导入进度及状态频道”c1,当websocket服务端接收到“导入进度及状态频道”c1上发布的导入进度及状态消息时,通过websocket连接同步发送给客户端;
65.具体地,步骤s3的详细处理步骤:
66.s301,服务器端启动后台数据导入任务,并初始化导入任务状态数据;
67.s302,调用redis服务接口,将任务初始状态数据写入redis数据库r2,同时向“导入进度及状态频道”c1发布任务已启动状态消息;
68.s303,调用redis服务接口,从“导入模板字典库”r1查询本任务对应的导入模板字典(注:导入模板字典为预设好的json对象,描述导入调用的数据库内部接口、源数据列与数据库表字段的对应关系、字段的数据类型);
69.s304,根据s303的查询结果是否有对应的导入模板字典进行下一步操作,当判断结果为“否”则进入s305,当判断结果为“是”则进入s306;
70.s305,调用redis服务接口,更新redis数据库中的任务状态数据r2,同时向“导入进度及状态频道”c1发布任务执行失败及失败原因状态消息;
71.s306,从磁盘读取s103上传的源数据文件f1,获取数据总行数;
72.s307,从s306读取的源数据中取首行数据,记为heads;
73.s308,从s306读取的源数据中顺序取一行数据;
74.s309,对s308所取数据的每一列,以s307中对应heads值为字段名称,结合s303中导入模板字典对相应字段的描述进行数据有效性验证,如果该行数据全部字段都有效,则进入s310,否则进入s312;
75.s310,将s308所取数据,以s307中对应heads值为字段名称,结合s303中导入模板字典对相应字段的描述,组装生成数据库操作语句,然后连接数据库d1调用对应数据库服务接口;
76.s311,等待并接收s310的数据库服务接口调用返回结果;
77.s312,调用redis服务接口,将该任务的当前状态更新到任务状态数据r2,将该任务的当前进度及状态信息发布到“导入进度及状态频道”c1,将当前行导入结果状态顺序写入“导入结果状态记录文件”f2;(注:进度数据包括待导入数据总行数、当前导入行数、导入成功行数、导入失败行数等)
78.s313,判断当前导入行是否为最后一行,如果“是”则进入s314,否则进入s308,并重复s308及其后步骤;
79.s314,调用redis服务接口,将该任务结束状态更新到任务状态数据r2,将该任务的当前进度及状态信息发布到“导入进度及状态频道”c1,结束任务;
80.具体地,步骤s4的详细处理步骤:
81.s401,客户端发起获取导入请求结果请求;
82.s402,服务端主服务程序监听到客户端请求,调用对应redis服务接口,从任务状态数据r2读取任务状态数据,并生成导入结果状态记录文件f2的url链接,返回给客户端,客户端根据需求选择是否下载导入结果状态记录文件f2,或者进行后续操作。
83.根据本发明说明书的一方面,还提供一种b/s架构下异步大数据量数据导入系统,如图1所示,包括:通过网络相互连接的客户端和服务端。客户端一般指浏览器,服务端主要包括主服务程序、redis服务、数据库服务以及各种文件。
84.所述客户端,用于发起数据导入请求,将待导入源数据文件上传至服务端,以及与服务端建立websocket连接,以同步接收并显示导入进度及导入状态;所述服务端,用于生成请求导入任务,将任务加入后台任务列表,订阅redis中对应后台导入任务的“导入进度及状态频道”c1,根据添加的后台任务列表信息,建立后台任务进行数据导入操作,并同步记录和发布导入进度及导入状态信息;所述客户端,还用于导入完成后,获取导入状态,根据导入状态选择是否下载完整数据导入状态记录数据文件并进行后续处理。
85.所述服务端,还用于监听到客户端请求后判断文件类型、大小是否合法,如果不合法,返回错误信息;如果判断合法,则将源数据文件写入服务端指定磁盘文件f1中,然后生成请求导入任务,并将任务加入后台任务列表。
86.所述服务端,还用于监听到客户端请求后建立websocket连接,并订阅redis中对应后台导入任务的“导入进度及状态频道”c1,当websocket服务端接收到“导入进度及状态频道”c1上发布的导入进度及状态消息时,通过websocket连接同步发送给客户端。
87.所述服务端,还用于执行以下步骤:
88.s301,服务器端启动后台数据导入任务,并初始化导入任务状态数据;
89.s302,调用redis服务接口,将初始任务状态数据写入redis数据库r2,同时向“导
入进度及状态频道”c1发布任务已启动状态消息;
90.s303,调用redis服务接口,从“导入模板字典库”r1查询本任务对应的导入模板字典(注:导入模板字典为预设好的json对象,描述导入调用的数据库内部接口、源数据列与数据库表字段的对应关系、字段的数据类型);
91.s304,根据s303的查询结果是否有对应的导入模板字典进行下一步操作,当判断结果为“否”则进入s305,当判断结果为“是”则进入s306;
92.s305,调用redis服务接口,更新redis数据库中的任务状态数据r2,同时向“导入进度及状态频道”c1发布任务执行失败及失败原因状态消息;
93.s306,从磁盘读取s103上传的源数据文件f1,获取数据总行数;
94.s307,从s306读取的源数据中取首行数据,记为heads;
95.s308,从s306读取的源数据中顺序取一行数据;
96.s309,对s308所取数据的每一列,以s307中对应heads值为字段名称,结合s303中导入模板字典对相应字段的描述进行数据有效性验证,如果该行数据全部字段都有效,则进入s310,否则进入s312;
97.s310,将s308所取数据,以s307中对应heads值为字段名称,结合s303中导入模板字典对相应字段的描述,组装生成数据库操作语句,然后连接数据库d1调用对应数据库服务接口;
98.s311,等待并接收s310的数据库服务接口调用返回结果;
99.s312,调用redis服务接口,将该任务的当前状态更新到任务状态数据r2,将该任务的当前进度及状态信息发布到“导入进度及状态频道”c1,将当前行导入结果状态顺序写入“导入结果状态记录文件”f2;(注:进度数据包括待导入数据总行数、当前导入行数、导入成功行数、导入失败行数等)
100.s313,判断当前导入行是否为最后一行,如果“是”则进入s314,否则进入s308,并重复s308及其后步骤;
101.s314,调用redis服务接口,将该任务结束状态更新到任务状态数据r2,将该任务的当前进度及状态信息发布到“导入进度及状态频道”c1,结束任务。
102.所述服务端,还用于监听到客户端请求,调用对应redis服务接口,从任务状态数据r2读取任务状态数据,并生成导入结果状态记录文件f2的url链接,返回给客户端。
103.本发明所述系统的实施可参照方法来实现。
104.需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统和各模块及单元的具体工作过程,可以参考前述实施例中的对应过程,在此不再赘述。
105.根据本发明说明书的一方面,提供一种计算机设备,该计算机设备可以为工控机、服务器或计算机终端。
106.所述计算机设备包括处理器、存储器,以及存储在所述存储器上并可被所述处理器执行的计算机程序,其中所述计算机程序被所述处理器执行时,实现所述的b/s架构下异步大数据量数据导入方法的步骤。
107.该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
108.非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种b/s架构下异步大数据量数据导入的方法。
109.处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
110.内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种b/s架构下异步大数据量数据导入的方法。
111.该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
112.应当理解的是,处理器可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
113.其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
114.s1,客户端发起数据导入请求,将待导入源数据文件上传至服务端,然后生成请求导入任务,并将任务加入后台任务列表;
115.s2,客户端与服务端建立websocket连接,并在服务端订阅redis中对应后台导入任务的“导入进度及状态频道”c1,用于同步接收并显示导入进度及导入状态;
116.s3,服务端根据s1中添加的后台任务列表信息,建立后台任务进行数据导入操作并同步记录和发布导入进度及导入状态信息;
117.s4,导入完成后,客户端根据导入状态选择下载完整数据导入状态记录数据文件并进行后续处理,例如筛选出导入失败数据人工修复后再导入等。
118.根据本发明说明书的一方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其中所述计算机程序被处理器执行时,实现所述的b/s架构下异步大数据量数据导入方法的步骤。
119.其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。
120.在本说明书的描述中,参考术语“一个实施方式”、“某些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
121.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管
参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1