数据导出方法、装置、计算机设备和可读存储介质与流程

文档序号:24653263发布日期:2021-04-13 20:31阅读:137来源:国知局
数据导出方法、装置、计算机设备和可读存储介质与流程

1.本申请涉及数据处理技术领域,特别是涉及数据导出方法、装置、计算机设备和可读存储介质。


背景技术:

2.在很多应用场景下,需要将信息系统后台数据库中的数据导出为excel表格。随着信息化大数据的发展,在数据导出中,经常需要处理大规模的数据,例如,对于服装定制行业,厂商定期需要将一年或者一季度的订单量进行导出。
3.在相关技术中,处理大规模数据导出业务,一般采用“一次导出、持续等待”,该导出方式占用内存资源过大,导致系统性能下降,且在大规模数据导出的过程中,存在导出时间很久甚至服务器崩溃的情况。
4.目前针对相关技术中,采用一次导出、持续等待的大规模数据导出方式,存在占用内存资源过大,甚至服务器崩溃的问题,尚未提出有效的解决方案。


技术实现要素:

5.本申请实施例提供了一种数据导出方法、装置、计算机设备和可读存储介质,解决了相关技术中,采用一次导出、持续等待的大规模数据导出方式,存在占用内存资源过大甚至服务器崩溃的问题。
6.第一方面,本申请实施例提供了一种数据导出方法,应用于服务器,所述方法包括:
7.获取所述服务器中待导出文件的读取数据;
8.根据所述待导出文件的读取数据,确定所述读取数据的数据量;
9.若所述数据量大于所述导出上限则将所述读取数据进行拆分,并通过多次导出所述读取数据,完成所述待导出文件的导出,反之,通过单次导出所述读取数据,完成所述待导出文件的导出。
10.在其中一些实施例中,获取待导出文件的读取数据包括:
11.获取待导出文件的存储属性,所述存储属性至少包括存储数据库;
12.根据所述存储属性,从第一数据库中调取与所述存储属性相匹配的文件读取类型,其中,所述第一数据库中至少存储有两种不同的文件读取类型;
13.根据与所述待导出文件的存储属性相匹配的文件读取类型,对所述待导出文件进行读取,生成所述待导出文件的读取数据。
14.在其中一些实施例中,所述待导出文件的存储数据库至少为以下类型之一:elasticsearch数据库、mysql数据库。
15.在其中一些实施例中,所述第一数据库中包括快照读取的文件读取类型和拆分读取的文件读取类型;若所述待导出文件的存储数据库为elasticsearch数据库,采用快照读取的文件读取类型对所述待导出文件进行读取,若所述待导出文件的存储数据库为mysql
数据库,采用拆分读取的文件读取类型对所述待导出文件进行读取。
16.在其中一些实施例中,若所述待导出文件的存储数据库为elasticsearch数据库,则根据与所述待导出文件的存储属性相匹配的文件读取类型,对所述待导出文件进行读取,生成所述待导出文件的读取数据包括:
17.设置基于所述elasticsearch数据库的查询参数;
18.根据所述查询参数,批量查询所述elasticsearch数据库中的待导出文件;
19.将查询的待导出文件保存至快照副本中,生成所述待导出文件的读取数据。
20.在其中一些实施例中,根据所述查询参数,批量查询所述elasticsearch数据库中的待导出文件包括:
21.根据所述查询参数,通过游标查询的方式查询所述elasticsearch数据库中的待导出文件。
22.在其中一些实施例中,若所述待导出文件的存储数据库为mysql数据库,则根据与所述待导出文件的存储属性相匹配的文件读取类型,对所述待导出文件进行读取,生成所述待导出文件的读取数据包括:
23.获取所述mysql数据库中待导出文件的存储数量;
24.根据所述存储数量,确定所述待导出文件的读取次数和读取单量;
25.根据所述读取次数和所述读取单量,对所述待导出文件进行读取,生成所述待导出文件的读取数据。
26.第二方面,本申请实施例提供了一种数据导出装置,所述数据导出装置包括:第一获取模块、第二获取模块和数据导出模块;
27.所述第一获取模块,用于获取所述服务器中待导出文件的读取数据;
28.所述第二获取模块,用于根据所述待导出文件的读取数据,确定所述读取数据的数据量;
29.所述数据导出模块,用于若所述数据量大于所述导出上限则将所述读取数据进行拆分,并通过多次导出所述读取数据,完成所述待导出文件的导出,反之,通过单次导出所述读取数据,完成所述待导出文件的导出。
30.第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的数据导出方法。
31.第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的数据导出方法。
32.相比于相关技术,本申请提供的数据导出方法、装置、计算机设备和可读存储介质,通过获取待导出文件的读取数据,根据所述待导出文件的读取数据,确定所述读取数据的数据量,若所述数据量大于所述导出上限则将所述读取数据进行拆分,并通过多次导出所述读取数据,完成所述待导出文件的导出,反之,通过单次导出所述读取数据,完成所述待导出文件的导出,解决了相关技术中,采用一次导出、持续等待的大规模数据导出方式,存在占用内存资源过大甚至服务器崩溃的问题,降低了大规模数据导出时所占用的服务器的内存资源,避免服务器崩溃的问题。
33.本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他
特征、目的和优点更加简明易懂。
附图说明
34.此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
35.图1是根据本申请实施例的数据导出方法的流程图;
36.图2是根据本申请实施例的获取待导出文件的读取数据的方法流程图一;
37.图3是根据本申请实施例的获取待导出文件的读取数据的方法流程图二;
38.图4是根据本申请实施例的获取待导出文件的读取数据的方法流程图三;
39.图5是根据本申请优选实施例的数据导出方法的流程图;
40.图6是根据本申请实施例的数据导出装置的结构框图;
41.图7是根据本申请实施例的计算机设备的内部结构示意图。
具体实施方式
42.为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
43.显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
44.在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
45.除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
46.在相关技术中,对于服装定制行业,在一年或者一季度的期间,厂商或者商家会将在这期间的订单量进行存储,例如,有可能将订单量存储在部署于同一台服务器上的elasticsearch数据库、mysql数据库以及api等数据库中;后期厂商或者公司需要将一年或者一季度的订单量进行导出,以便于对订单量进行分析和汇总;但目前厂商或者公司常采用的导出方式是“一次导出、持续等待”,该导出方式占用服务器内存资源过大,导致系统性能下降,且在大规模数据导出的过程中,存在导出时间很久甚至服务器崩溃的情况。本申请提供的数据导出方法,应用于服务器,通过获取待导出文件的读取数据,并根据待导出文件的读取数据确定读取数据的数据量,进一步地,若数据量大于导出上限则将读取数据进行拆分,并通过多次导出读取数据,完成待导出文件的导出,反之,通过单次导出读取数据,完成待导出文件的导出,解决了相关技术中,采用“一次导出、持续等待”的大规模数据导出方式,存在占用服务器内存资源过大甚至服务器崩溃的问题,并降低了大规模数据导出时所占用的服务器的内存资源,避免服务器崩溃的问题。
47.本实施例提供了一种数据导出方法,图1是根据本申请实施例的数据导出方法的流程图,如图1所示,数据导出方法包括如下步骤:
48.步骤s101,获取服务器中待导出文件的读取数据;
49.具体地,在将服务器中的待导出文件进行导出前,先获取或者拉取该服务器中待导出文件的读取数据;
50.步骤s102,根据待导出文件的读取数据,确定读取数据的数据量;
51.例如,可以根据读取数据所占用的内存量,确定待导出文件的读取数据的数据量;
52.步骤s103,若数据量大于导出上限则将读取数据进行拆分,并通过多次导出读取数据,完成待导出文件的导出,反之,通过单次导出读取数据,完成待导出文件的导出;
53.具体地,最后在将待导出文件的读取数据进行导出时,均需进行进一步的判断,也就是判断待导出文件的读取数据的数据量是否大于导出上限,若读取数据的数据量大于导出上限,则将读取数据分成多次进行导出,其中,可以导出excel,也可以是导出一个excel文件的xml形式然后另存为.xls文件;
54.通过上述步骤s101至步骤s103,首先从对应的服务器中获取待导出文件的读取数据,并根据待导出文件的读取数据确定读取数据的数据量,进一步地,若数据量大于导出上限则将读取数据进行拆分,并通过多次导出读取数据,完成待导出文件的导出,反之,通过单次导出读取数据,完成待导出文件的导出,解决了相关技术中,采用“一次导出、持续等待”的大规模数据导出方式,存在占用服务器内存资源过大甚至服务器崩溃的问题,并降低了大规模数据导出时所占用的服务器的内存资源,避免服务器崩溃的问题。
55.在其中一些实施例中,图2是根据本申请实施例的获取待导出文件的读取数据的方法流程图一,如图2所示,获取待导出文件的读取数据包括如下步骤:
56.步骤s201,获取待导出文件的存储属性,存储属性至少包括存储数据库;
57.需要说明的是,在一年或者一季度的期间,厂商或者商家会将在这期间的订单量存储在某一服务器上,但同一台服务器上存在同时部署有elasticsearch数据库、mysql数据库以及api等数据库,因此存在有不同的待导出文件存储于不同的数据库类型的情形;
58.步骤s202,根据存储属性,从第一数据库中调取与存储属性相匹配的文件读取类型,其中,第一数据库中至少存储有两种不同的文件读取类型;
59.例如,若待导出文件存储于elasticsearch数据库中,可以采用第一文件读取类型,若待导出文件存储于mysql数据库中,可以采用第二文件读取类型,且第一文件读取类型和第二读取文件类型不同;
60.步骤s203,根据与待导出文件的存储属性相匹配的文件读取类型,对待导出文件进行读取,生成待导出文件的读取数据;
61.通过上述步骤s201至步骤s203,预先获取待导出文件的存储属性,然后根据待导出文件的存储属性匹配相对应的文件读取类型,进一步地,根据与待导出文件的存储属性相匹配的文件读取类型对待导出文件进行读取,生成待导出文件的读取数据,通过采用与待导出文件的存储属性相匹配的文件读取类型对服务器中的待导出文件进行读取,进而提高读取的效率。
62.在其中一些实施例中,待导出文件的存储数据库至少为以下类型之一:elasticsearch数据库、mysql数据库;在其中一些实施例中,第一数据库中包括快照读取的文件读取类型和拆分读取的文件读取类型;若待导出文件的存储数据库为elasticsearch数据库,采用快照读取的文件读取类型对待导出文件进行读取,若待导出文件的存储数据库为mysql数据库,采用拆分读取的文件读取类型对待导出文件进行读取;
63.需要说明的是,面对多集群的企业级复杂架构,对于服务器中elasticsearch数据库中的数据,采用快照的方式进行数据迁移,使得数据迁移平稳、且数据迁移完整度高。
64.在其中一些实施例中,图3是根据本申请实施例的获取待导出文件的读取数据的方法流程图二,如图3所示,若待导出文件的存储数据库为elasticsearch数据库,则根据与待导出文件的存储属性相匹配的文件读取类型,对待导出文件进行读取,生成待导出文件的读取数据包括如下步骤:
65.步骤s301,设置基于elasticsearch数据库的查询参数;
66.具体地,查询参数可以是每次查询一分钟,也就是在服务器的elasticsearch数据库中每次保持查询窗口一分钟;且查询的时间会在每次做查询的时候刷新,所以这个时间只需要足够处理当前批的数据就可以;
67.步骤s302,根据查询参数,批量查询elasticsearch数据库中的待导出文件;
68.步骤s303,将查询的待导出文件保存至快照副本中,生成待导出文件的读取数据。
69.在其中一些实施例中,根据查询参数,批量查询elasticsearch数据库中的待导出文件包括:根据查询参数,通过游标查询的方式查询elasticsearch数据库中的待导出文件;
70.需要说明的是,游标查询允许先做查询初始化,也就是设置基于elasticsearch数据库的查询参数,然后再批量地拉取结果;游标查询会取某个时间点的快照数据,查询初始化之后索引上的任何变化会被它忽略,它通过保存旧的数据文件来实现这个特性,结果就像保留初始化时的索引视图一样;另一种查询方式是深度分页,深度分页的根源是结果集全局排序,游标查询相较于深度分页来讲,游标查询用字段_doc来排序,这个指令让elasticsearch仅仅从还有结果的分片返回下一批结果。
71.在其中一些实施例中,图4是根据本申请实施例的获取待导出文件的读取数据的方法流程图三,如图4所示,若待导出文件的存储数据库为mysql数据库,则根据与待导出文件的存储属性相匹配的文件读取类型,对待导出文件进行读取,生成待导出文件的读取数
据包括:
72.步骤s401,获取mysql数据库中待导出文件的存储数量;
73.步骤s402,根据存储数量,确定待导出文件的读取次数和读取单量;
74.例如,若mysql数据库中当前待导出文件的存储数量为10万份文件,可以每次读取1万份文件;
75.步骤s403,根据读取次数和读取单量,对待导出文件进行读取,生成待导出文件的读取数据;
76.通过步骤s401至步骤s403,根据服务器的mysql数据库中待导出文件的存储数量,通过批量进行读取数据或者拉取数据,一定程度上降低所消耗的服务器内存。
77.下面通过优选实施例对本申请实施例进行描述和说明。
78.图5是根据本申请优选实施例的数据导出方法的流程图,如图5所示,数据导出方法如下步骤:
79.步骤s501,获取服务器中待导出文件的存储数据库类型;
80.步骤s502,根据存储数据库类型,从第一数据库中调取与存储数据库类型相匹配的文件读取类型,其中,第一数据库中包括快照读取的文件读取类型和拆分读取的文件读取类型;
81.步骤s503,若待导出文件的存储数据库为elasticsearch数据库,采用快照读取的文件读取类型对待导出文件进行读取,若待导出文件的存储数据库为mysql数据库,采用拆分读取的文件读取类型对待导出文件进行读取;
82.步骤s504,根据待导出文件的读取数据,确定读取数据的数据量;
83.步骤s505,若数据量大于导出上限则将读取数据进行拆分,并通过多次导出读取数据,完成待导出文件的导出,反之,通过单次导出读取数据,完成待导出文件的导出。
84.需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
85.本实施例还提供了一种数据导出装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
86.在一些实施例中,图6是根据本申请实施例的数据导出装置的结构框图,如图6所示,数据导出装置包括:第一获取模块61、第二获取模块62和数据导出模块63;
87.第一获取模块61,用于获取待导出文件的读取数据;
88.第二获取模块62,用于根据待导出文件的读取数据,确定读取数据的数据量;
89.数据导出模块63,用于若数据量大于导出上限则将读取数据进行拆分,并通过多次导出读取数据,完成待导出文件的导出,反之,通过单次导出读取数据,完成待导出文件的导出;
90.通过上述的数据导出装置,首先从对应的服务器中获取待导出文件的读取数据,并根据待导出文件的读取数据确定读取数据的数据量,进一步地,若数据量大于导出上限则将读取数据进行拆分,并通过多次导出读取数据,完成待导出文件的导出,反之,通过单
次导出读取数据,完成待导出文件的导出,解决了相关技术中,采用“一次导出、持续等待”的大规模数据导出方式,存在占用服务器内存资源过大甚至服务器崩溃的问题,并降低了大规模数据导出时所占用的服务器的内存资源,避免服务器崩溃的问题。
91.在其中一些实施例中,第一获取模块61、第二获取模块62还用于实现上述各实施例提供的数据导出方法中的步骤,在这里不再赘述。
92.需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
93.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据导出方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
94.在一个实施例中,图7是根据本申请实施例的计算机设备的内部结构示意图,如图7所示,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据导出的方法。
95.本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
96.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各实施例提供的数据导出的方法中的步骤。
97.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个实施例提供的数据导出的方法中的步骤。
98.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom
(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
99.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
100.以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1