一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2021-12-17 21:09:00 来源:中国专利 TAG:


1.本公开涉及数据处理技术领域,具体而言,涉及一种数据处导出方法、数据导出装置、计算机可读存储介质、电子设备。


背景技术:

2.在大数据管理平台中,常常需要进行不同的数据导出,以进行不同的业务需求分析。
3.现有技术中,通常是客户端组装查询参数发起数据导出请求,后台系统业务层根据查询参数拼装sql(structured query language,结构化查询语言),一次查询出所有数据并返回;后台控制层和模型层使用response(代表响应的对象)的i/o(输入/输出)流写入查询出的数据,客户端下载response中的数据,从而实现数据的导出和下载。
4.然而,这种方式在导出的数据量较大,例如百万级时,会增加数据库的压力,导致内存溢出,且存在导出效率低下,导出时间过长的问题。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开的目的在于提供一种数据导出方法及装置、计算机可读存储介质及电子设备,进而至少在一定程度上改善大数据量的数据导出存在的效率低下的问题。
7.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
8.根据本公开的第一方面,提供了一种数据导出方法,包括:
9.响应于客户端的数据导出请求,获取导出参数信息,并生成待导出数据的导出文件标识,所述导出参数信息包括所述待导出数据的查询条件;
10.通过异步线程获取所述待导出数据的导出路径,并根据所述导出路径和所述导出文件标识创建导出文件;
11.所述异步线程根据所述待导出数据的查询条件分页查询所述待导出数据,按照所述分页查询的顺序将查询到的所述待导出数据写入到所述导出文件中,以生成目标导出文件。
12.在本公开的一种示例性实施例中,基于前述方案,所述异步线程根据所述待导出数据的查询条件分页查询所述待导出数据包括:
13.获取待导出数据量和预设的异步线程的数量;
14.根据所述待导出数据量和所述预设的异步线程的数量,为各所述异步线程分配子待导出数据量;
15.各所述异步线程并行的根据所述待导出数据的查询条件和所述子待导出数据量,分页查询子待导出数据;
16.所述按照所述分页查询的顺序将查询到的所述待导出数据写入到所述导出文件中,以生成目标导出文件,包括:
17.各所述异步线程按照所述分页查询的顺序,将查询到的子待导出数据分别写入到各所述异步线程所对应的子导出文件中;
18.合并所述各子导出文件,以生成目标导出文件。
19.在本公开的一种示例性实施例中,基于前述方案,在将查询到的子待导出数据写入到各所述异步线程所对应的子导出文件中之前,所述方法还包括:
20.根据所述导出文件标识和各所述异步线程的线程标识,生成各所述异步线程所对应的子导出文件标识;
21.获取所述导出路径和所述子导出文件标识,以创建各所述异步线程所对应的子导出文件。
22.在本公开的一种示例性实施例中,基于前述方案,所述合并所述各子导出文件,以生成目标导出文件,包括:
23.根据所述导出路径和各所述子导出文件标识读取各子导出文件;
24.将读取到的各子导出文件写入到所述导出文件中,以生成目标导出文件。
25.在本公开的一种示例性实施例中,基于前述方案,其特征在于,所述导出参数信息还包括导出用户标识、导出时间中的至少一种;
26.所述生成待导出数据的导出文件标识,包括:
27.根据所述导出参数信息生成待导出数据的导出文件标识。
28.在本公开的一种示例性实施例中,基于前述方案,生成待导出数据的导出文件标识后,所述方法还包括:
29.根据所述导出文件标识和所述导出参数信息生成目标导出任务;
30.将所述目标导出任务写入导出任务信息表,并将所述目标导出任务的状态配置为导出中状态。
31.在本公开的一种示例性实施例中,基于前述方案,生成目标导出文件后,所述方法还包括:
32.上传所述目标导出文件至存储平台;
33.接收所述存储平台发送的所述目标导出文件的统一资源定位符;
34.将所述统一资源定位符写入所述导出任务信息表,以关联所述统一资源定位符和所述导出文件标识。
35.在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
36.当所述目标导出文件上传成功时,将所述导出文件标识所对应的目标导出任务的状态从导出中状态更新为成功状态;
37.当所述目标导出文件上传失败时,将所述导出文件标识所对应的目标导出任务的状态从导出中状态更新为失败状态,并记录所述失败状态的失败标识,其中,所述失败标识包括导出异常或上传异常。
38.在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
39.向所述客户端返回所述导出文件标识,所述导出文件标识用于指示所述客户端确定所述目标导出文件的统一资源定位符;
40.响应于所述客户端对所述统一资源定位符的触发操作,根据所述统一资源定位符在所述客户端下载所述目标导出文件。
41.在本公开的一种示例性实施例中,基于前述方案,获取导出参数信息后,所述方法还包括:
42.查询导出任务信息表,以确定所述导出任务信息表中是否存在查询条件与所述导出参数信息中的查询条件相同的导出任务;
43.如果存在,则向所述客户端发送提示信息,所述提示信息用于指示所述客户端确定所述导出任务的目标导出文件所对应的统一资源定位符;
44.响应于所述客户端对所述统一资源定位符的触发操作,根据所述统一资源定位符在所述客户端下载所述目标导出文件。
45.根据本公开的第二方面,提供了一种数据导出装置,包括:
46.导出请求响应模块,被配置为响应于客户端的数据导出请求,获取导出参数信息,并生成待导出数据的导出文件标识,所述导出参数信息包括所述待导出数据的查询条件;
47.导出文件创建模块,被配置为通过异步线程获取所述待导出数据的导出路径,并根据所述导出路径和所述导出文件标识创建导出文件;
48.目标导出文件生成模块,被配置为所述异步线程根据所述待导出数据的查询条件分页查询所述待导出数据,按照所述分页查询的顺序将查询到的所述待导出数据写入到所述导出文件中,以生成目标导出文件。
49.根据本公开的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的数据导出方法。
50.根据本公开实施例的第四方面,提供了一种电子设备,包括:处理器;以及,存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的数据导出方法。
51.由上述技术方案可知,本公开示例性实施例中的数据导出方法、数据导出装置,以及实现所述数据导出方法的计算机可读存储介质及电子设备,至少具备以下优点和积极效果:
52.在本公开的一些实施例所提供的技术方案中,首先,响应于客户端的数据导出请求,获取导出参数信息,并生成待导出数据的导出文件标识;然后,通过异步线程获取待导出数据的导出路径,并根据导出路径和导出文件标识创建导出文件;最后,异步线程根据查询条件分页查询待导出数据,按照分页查询的顺序将查询到的待导出数据写入到导出文件中,以生成目标导出文件。与相关技术相比,一方面,本公开基于异步线程执行数据导出操作,可以提高数据导出的效率,进而避免同步导出大数据时,前后端网络连接中断造成的数据无法导出的问题;另一方面,本公开基于分页查询,可以降低大数据量数据导出时,对数据库性能的影响,同时解决了大数据量导出时存在的内存溢出问题。
53.本公开应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
54.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施
例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
55.图1示出本公开一示例性实施例中现有技术的数据导出方法的流程示意图;
56.图2示出本公开一示例性实施例中的数据导出方法的流程示意图;
57.图3示出本公开一示例性实施例中的多个异步线程进行数据导出的方法的流程示意图;
58.图4示出本公开一示例性实施例中的另一种数据导出方法的流程示意图;
59.图5示出本公开一示例性实施例中的数据导出方法的交互流程示意图;
60.图6示出本公开一示例性实施例中数据导出装置的结构示意图;
61.图7示出本公开示例性实施例中计算机存储介质的结构示意图;以及,
62.图8示出本公开示例性实施例中电子设备的结构示意图。
具体实施方式
63.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
64.本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等。
65.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
66.相关技术中,如图1所示,在进行数据导出时,在步骤s110中,客户端11的web(world wide web,全球广域网)应用组装查询参数,以发起数据导出请求;在步骤s120中,后端控制层12将该数据导出请求转发给后端服务层13;在步骤s130中,后端服务层13根据查询参数组装sql;在步骤s140中,后端服务层13根据拼装的sql向数据库14发起查询请求;在步骤s150中,数据库14将查询到的数据返回给后端控制层12;在步骤s160中,后端控制层12使用response的i/o流写入查询到的数据;在步骤s170中,客户端11的web应用可以下载response中的数据。从而实现数据的导出和下载。
67.然而,相关技术中的数据导出方法,在导出数据量较大时,如百万级以上的数据量,一次查出所有数据会增加数据库压力,导致内存溢出甚至使应用停止,同时,相关技术中的数据导出方法,导出效率低下,数据导出时间长,会增加由于前后端网络连接中断而无法导出数据的可能性,从而降低数据导出的稳定性。
68.在本公开的实施例中,首先,提供了数据导出方法至少在一定程度上克服上述相关技术中存在的缺陷。
69.图2示出本公开一示例性实施例中数据导出方法的流程示意图,参考图2,该方法包括:
70.步骤s210,响应于客户端的数据导出请求,获取导出参数信息,并生成待导出数据的导出文件标识,导出参数信息包括所述待导出数据的查询条件;
71.步骤s220,通过异步线程获取待导出数据的导出路径,并根据导出路径和导出文件标识创建导出文件;
72.步骤s230,异步线程根据待导出数据的查询条件分页查询待导出数据,按照分页查询的顺序将查询到的待导出数据写入到导出文件中,以生成目标导出文件。
73.在图2所示实施例所提供的技术方案中,首先,响应于客户端的数据导出请求,获取导出参数信息,并生成待导出数据的导出文件标识;然后,通过异步线程获取待导出数据的导出路径,并根据导出路径和导出文件标识创建导出文件;最后,异步线程根据查询条件分页查询待导出数据,按照分页查询的顺序将查询到的待导出数据写入到导出文件中,以生成目标导出文件。与相关技术相比,一方面,本公开基于异步线程执行数据导出操作,可以提高数据导出的效率,进而避免同步导出大数据时,前后端网络连接中断造成的数据无法导出的问题;另一方面,本公开基于分页查询,可以降低大数据量数据导出时,对数据库性能的影响,同时解决了大数据量导出时存在的内存溢出问题。
74.以下对图2所示实施例中各个步骤的具体实施方式进行详细阐述:
75.在步骤s210中,响应于客户端的数据导出请求,获取导出参数信息,并生成待导出数据的导出文件标识,导出参数信息包括所述待导出数据的查询条件。
76.其中,查询条件可以包括在数据库中确定待导出数据的条件参数,以待导出数据是电商平台的数据库中的数据为例,查询条件可以是2020年第一季度的库存。
77.在示例性的实施方式中,导出参数信息还可以包括导出用户标识、导出时间中的至少一种。例如,导出参数信息可以包括待导出数据的查询条件、导出人、导出时间等信息,本示例性实施方式对此不做特殊限定。
78.在获取导出参数信息后,示例性的,生成待导出数据的导出文件标识包括:根据所述导出参数信息生成待导出数据的导出文件标识。
79.具体的,可以根据导出参数信息中的导出时间生成导出文件标识,例如,2020年9月10日11点12分13秒发出了一个数据导出请求,那么,生成的文件标识可以是202009111213。
80.生成待导出数据的导出文件标识后,还包括:根据导出文件标识和导出参数信息生成目标导出任务,将目标导出任务写入导出任务信息表,并将目标导出任务的状态配置为导出中状态。
81.举例而言,客户端发起数据导出请求后,服务端接收线程可以根据导出请求中的导出时间生成要导出的文件名,然后连同导出人、导出时间等信息一起生成一个目标导出任务记录,将该记录写入到导任务信息表中,并将该文件名对应的任务状态配置为导出中状态,以提示客户该导出任务正在进行中。其中,导出任务信息表中可以存储在数据库中。
82.生成导出文件标识后,在步骤s220中,通过异步线程获取待导出数据的导出路径,
并根据导出路径和导出文件标识创建导出文件。
83.示例性的,在通过异步线程获取待导出数据的导出路径之前,同步线程可以先开启异步线程。开启异步线程后,同步线程可以将导出文件标识和导出参数信息一起发送给异步线程。异步线程接收到导出文件标识后,获取待导出数据的导出路径,然后根据导出路径和导出文件标识创建导出文件。例如,异步线程可以根据导出路径和导出文件标识创建导出文件对象。
84.其中,导出路径可以是待导出数据所在的后端服务器的根目录路径,可以将其设置为默认的导出路径,当然,导出路径也可以根据用户的需求进行自定义,本示例性实施方式对此不做特殊限制。
85.需要说明的是,此时的导出文件只是一个空文件,还没有写入待导出数据。
86.创建导出文件后,在步骤s230中,异步线程根据待导出数据的查询条件分页查询待导出数据,按照分页查询的顺序将查询到的待导出数据写入到导出文件中,以生成目标导出文件。
87.在数据量较大时,为了解决一次性查询所有数据导致的内存溢出问题,在本示例性实施方式中,异步线程可以根据查询条件进行分页查询。然后根据查询顺序,使用i/o流依次将查询到的待导出文件追加的写入到导出文件中,以生成目标导出文件。其中,每个分页查询的数据量可以根据用户需求进行自定义。
88.例如,可以预先设置每个分页查询的数据记录为1000条,则第一个分页一次性查询1000条的数据记录,将该分页查询到的待导出数据写入到导出文件中,第二个分页一次性查询1001-2000条的数据记录,将该分页查询到的待导出文件写入到导出文件中,以此类推,直到顺序的查询完所有的待导出数据,并顺序的全部写入到导出文件中,则导出完成。
89.需要说明的是,最后一个分页的查询数据量大于等于1且小于等于每个分页的预设的查询数据量,以上述的每个分页查询的数据记录预设为1000为例,最后一个分页查询的数据量大于等于1且小于等于1000。
90.进一步的,在示例性的实施方式中,异步线程的数量可以是多个。具体的,可以在上述步骤s220中的异步线程中开启多个子线程,以得到多个异步线程。这样,可以进行更大数据量的数据导出,例如,千万级以上的数据量的数据导出,同时,可以提高数据的导出效率,以避免长时间的数据导出过程中前后端网络连接中断造成的数据无法导出的问题。
91.示例性的,使用多个异步线程进行数据导出的方法可以如图3所示。参考图3,该方法可以包括步骤s310-步骤s350:
92.在步骤s310中,获取待导出数据量和预设的异步线程的数量。
93.在示例性的实施方式中,待导出数据量可以是需要在后端服务器的数据库中查询的数据的总量。预设的异步线程的数量,即,在上述的步骤s220中的异步线程中开启的子线程的数量可以根据用户的需求进行自定义设定。
94.接下来,在步骤s320中,根据待导出数据量和预设的异步线程的数量,为各异步线程分配子待导出数据量。
95.示例性的,可以根据待导出数据量和预设的异步线程的数量,为每个异步线程的平均的分配子待导出数据量。其中,子待导出数据量可以是异步线程所要处理的数据量。当不能均分时,可以将多出的数据量分配给其中的任意一个线程,例如,最后一个线程。
96.例如,待导出的数据量为1000万,预设的异步线程的数量为100,则每个异步线程的子待导出数据量为10万。
97.继续参考图3,在步骤s330中,各异步线程并行的根据待导出数据的查询条件和子待导出数据量,分页查询子待导出数据。
98.示例性的,可以使用线程池,让各个异步线程并行的根据查询条件和子待导出数据量,以分页查询的方式在数据库中查询子待导出数据。这样,可以进一步的解决大数据量数据导出存在的内存溢出的问题,实现大数据量的数据导出。
99.各异步线程分页查询的具体实施方式和上述的单个异步线程进行分页查询的具体实施方式相同,此处不再进行赘述。
100.当然,各异步线程也可以根据实际需要直接进行数据查询,而不进行分页查询,本示例性实施方式对此不做特殊限定。
101.各异步线程查询到子待导出数据后,在步骤s340中,各异步线程按照分页查询的顺序,将查询到的子待导出数据分别写入到各异步线程所对应的子导出文件中。
102.示例性的,在将查询到的子待导出数据写入到各异步线程所对应的子导出文件中之前,可以先创建子导出文件。示例性的,创建子导出文件的具体实施方式可以是,根据导出文件标识和各异步线程的线程标识,生成各异步线程所对应的子导出文件标识;获取导出路径和子导出文件标识,以创建各异步线程所对应的子导出文件。
103.其中,各异步线程的线程标识可以包括线程号,例如,第1个异步线程,第2个异步线程,第3个异步线程等等。
104.举例而言,导出文件标识可以如上述的202009111213,那么第1个异步线程对应的子导出文件标识可以是202009111213_001,第2个异步线程对应的子导出文件标识可以是202009111213_002,以此类推,第100个异步线程对应的子导出文件标识可以是202009111213_100。
105.生成各异步线程所对应的子导出文件标识后,可以获取导出路径和子导出文件,以创建各异步线程所对应的子导出文件。其中,该导出路径和上述的步骤s220中的导出路径相同。
106.创建子导出文件后,各异步线程可以根据导出路径和子导出文件标识,将分页查询的子待导出数据顺序的写入其对应的子导出文件中。
107.所有异步线程执行完导出操作后,在步骤s350中,合并各子导出文件,以生成目标导出文件。
108.示例性的,步骤s350的具体实施方式可以是,根据导出路径和各子导出文件标识读取各子导出文件;将读取到的各子导出文件写入到导出文件中,以生成目标导出文件。
109.具体的,可以根据导出路径和子导出文件标识顺序的读取各子导出文件,例如,按照202009111213_001、202009111213_002、202009111213_003,

,202009111213_100的顺序依次读取各子待导出文件,并根据读取顺序将各子待导出文件写入到导出文件202009111213中,以生成目标导出文件。其中,目标导出文件是写入了待导出数据的文件。
110.通过上述的步骤s310-步骤s350,通过多个异步线程,按照导出的数据总量分配每个异步线程要导出的数据范围,各异步线程并行的导出数据到其所对应的子导出文件,最后再将各个子导出文件合并为一个导出文件,从而可以实现千万级的大数据量的数据导
出。
111.进一步的,在生成目标导出文件后,可以将目标导出文件上传至存储平台。
112.示例性的,将目标导出文件上传至存储平台,可以包括:上传目标导出文件至存储平台;接收存储平台发送的目标导出文件的统一资源定位符;将统一资源定位符写入导出任务信息表,以关联统一资源定位符和导出文件标识。其中,上述的存储平台可以是第三方的分布式存储平台。
113.举例而言,导出成功后,可以将目标导出文件上传至第三方存储平台,并将第三方存储平台发送的url(uniform resource locator,统一资源定位符)写入到导出任务信息表目标导出任务所对应的导出记录中,以关联统一资源定位符和导出文件标识。
114.这种将目标导出文件上传至第三方存储平台的方式,可以共享目标导出文件,从而实现一次导出,多处复用,其它客户端的用户在确定导出文件标识的情况下,可以直接在导出任务信息表中找到该导出文件标识所对应的统一资源定位符,从而直接下载所需的目标导出文件。
115.示例性的,当目标导出文件上传成功时,将导出文件标识所对应的目标导出任务的状态从导出中状态更新为成功状态;当目标导出文件上传失败时,将导出文件标识所对应的目标导出任务的状态从导出中状态更新为失败状态,并记录该失败状态的失败标识,其中,失败标识包括导出异常或上传异常。
116.通过更新导出任务的状态,可以在上传成功时,提醒用户当前导出任务已完成,可以进行导出数据的下载。
117.举例而言,当目标导出文件上传成功时,可以向客户端发送导出完成的提示信息,例如,上传成功后,可以向客户端发送“导出任务202009111213已导出完成,可以进行下载”,以让客户端的用户可以根据该提示信息及时的下载目标导出文件。同时,当目标导出文件上传失败时,也可以向客户端发送导出失败的提示信息,以让客户端的用户及时发现异常,进行导出任务的重新处理,从而提高工作效率。
118.此外,进行状态更新时,还可以在导出任务信息表中记录状态更新的时间。
119.进一步的,在导出任务信息表中写入目标导出文件的统一资源定位符后,所述方法还包括:向客户端返回导出文件标识,其中,该导出文件标识用于指示客户端确定目标导出文件的统一资源定位符;响应于客户端对该统一资源定位符的触发操作,根据统一资源定位符在该客户端下载目标导出文件。
120.例如,在生成导出文件标识后,可以向客户端返回该导出文件标识,这样,客户端的用户可以根据该导出文件标识找到对应的统一资源定位符,点击该统一资源定位符进行目标导出文件的下载。
121.示例性的,图4示出本公开一示例性实施例中另一种数据导出方法,参考图4,该方法可以包括步骤s410-步骤s450。
122.在步骤s410中,获取导出参数信息中的查询条件;
123.在步骤s420中,查询导出任务信息表,确定导出任务信息表中是否存在查询条件与该查询条件相同的导出任务;如果存在,则转至步骤s430-步骤s440,如果不存在,则转至步骤s450。
124.在步骤s430中,向客户端发送提示信息,该提示信息用于指示客户端确定导出任
务的目标导出文件所对应的统一资源定位符;
125.步骤上s440,响应于客户端对统一资源定位符的触发操作,根据统一资源定位符在该客户端下载目标导出文件。
126.举例而言,可以向客户端发送提示信息“导出任务202009111213的查询条件和您的查询条件相同,您可以直接下载该导出任务所对应的导出数据”。然后,客户端的用户可以根据提示信息中的导出任务标识202009111213在客户端显示的导出任务信息表中找到该导出任务,然后触发该导出任务中的统一资源定位符,例如点击统一资源定位符,从而可以在该客户端直接下载该导出任务所对应的目标导出文件。
127.这样,在将目标导出文件上传至第三方存储平台,并将目标导出文件标识和目标导出文件的统一资源定位符关联后,通过查询条件,可以在客户端的用户不知道导出任务信息表中是否存在目标导出任务的情况下,自动的进行判断,以提醒客户端的用户直接进行下载,从而提高工作效率。
128.在步骤s450中,执行异步线程分页导出操作。
129.示例性的,步骤s450中的异步线程分页导出操作的具体实施方式和上述的步骤s210-步骤s230相同,此处不再进行赘述。
130.为了对上述的数据导出方法进行更加清楚详细的说明。示例性的,图5示出本公开一示例性实施例中客户端、后端控制层、后端服务层、数据库、文件存储平台之间交互的示意图。其中,后端控制层、后端服务层均部署在后端服务器中。参考图5,其可以包括步骤s501-步骤s516。
131.在步骤s501中,客户端51向后端控制层52发送导出任务的数据导出请求。
132.其中,数据导出请求中包括导出参数信息。该导出参数信息和上述的步骤s210中的导出参数信息相同。
133.在步骤s502中,后端控制层52接收客户端51发送的数据导出请求。
134.在步骤s503中,后端控制层52将接收的数据导出请求转发给后端服务层53。
135.在步骤s504中,后端服务层53接收后端控制层52转发的数据导出请求,根据数据导出请求中的导出参数信息生成导出文件标识。
136.在步骤s505中,后端服务层53将导出参数信息和导出文件标识写入导出任务信息表中。
137.在步骤s506中,后端服务层53将生成的导出文件标识返回给客户端51。
138.在步骤s507中,后端服务层53开启异步线程,通过异步线程获取导出路径,以使异步线程根据导出路径和导出文件标识创建导出文件。
139.在步骤s508中,异步线程确定分页参数,并获取导出参数信息中的查询条件;
140.在步骤s509中,异步线程根据分页参数和导出参数信息中的查询条件向数据库54发起数据查询请求;
141.在步骤s510中,数据库54向后端服务层53返回分页查询的数据;
142.在步骤s511中,异步线程将分页查询到的数据顺序的写入创建的导出文件中,以生成目标导出文件。
143.在步骤s512中,数据导出完成后,后端服务层53将生成的目标导出文件上传至文件存储平台55。
144.在步骤s513中,文件存储平台55向后端服务层53返回上传结果。
145.在示例性的实施方式中,上传结果包括上传失败或上传成功,当上传成功时,并向后端服务层53返回上传成功的消息,并发送目标导出文件的存储地址;当上传失败时,则直接向后端服务层53返回上传失败的消息。其中,目标导出文件的存储地址,可以包括目标导出文件的统一资源定位符。
146.在步骤s514中,后端服务层53根据接收的上传结果更新导出任务信息表中导出任务的状态。如果上传成功,则同时将接收的目标导出文件的地址写入到导出任务信息表中。
147.在步骤s515中,客户端51根据导出文件标识所对应的目标导出文件的存储地址,向文件存储平台55发送目标导出文件的下载请求。
148.示例性的,上述的导出任务信息表存储在数据库中,其中,导出任务信息表所存储的数据库和待导出数据的数据库可以相同,也可以不同,即导出任务信息表可以存储在数据库54中,也可以存储在其他的数据库中,本示例性实施方式对此不做任何限定。
149.与此同时,任何用户的任何导出任务信息都会记录在导出任务信息表中,进一步的,可以在客户端51的图形用户界面中创建导出任务信息表标识控件,响应于对该导出任务信息表标识控件的触发操作,可以在客户端51的图形用户界面中显示导出任务信息表。
150.在客户端51的图形用户界面中显示导出任务信息表后,客户端51中的用户可可以查询该导出任务信息表,找到与导出文件标识对应的导出任务,当该导出任务的状态为上传成功时,可以点击其对应的统一资源定位符,以向文件存储平台55发送目标导出文件的下载请求。
151.当然,客户端的用户也可以不用自己查询导出任务信息表,确定是否可以进行目标导出文件的下载,而是在目标导出文件上传成功后,向客户端发送数据导出完成的提示信息,以提醒客户端的用户进行目标导出文件的下载,本示例性实施方式对此不做特殊限定。
152.在步骤s516中,文件存储平台55向客户端51发送目标导出文件,以使客户端完成目标导出文件的下载。
153.本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由cpu执行的计算机程序。在该计算机程序被cpu执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
154.此外,需要注意的是,上述附图仅是根据本发明示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
155.图6示出本公开示例性实施例中数据导出装置的结构示意图。示例性的,参考图6,该方法可以包括:导出请求响应模块610,导出文件创建模块620,目标导出文件生成模块630。其中:
156.上述的导出请求响应模块610,被配置为响应于客户端的数据导出请求,获取导出参数信息,并生成待导出数据的导出文件标识,导出参数信息包括待导出数据的查询条件;
157.上述的导出文件创建模块620,被配置为通过异步线程获取待导出数据的导出路
径,并根据导出路径和导出文件标识创建导出文件;
158.上述的目标导出文件生成模块630,被配置为异步线程根据待导出数据的查询条件分页查询待导出数据,按照分页查询的顺序将查询到的待导出数据写入到导出文件中,以生成目标导出文件。
159.在本公开的一种示例性实施例中,基于前述实施例,上述的导出请求响应模块610,还被具体配置为:
160.根据导出文件标识和导出参数信息生成目标导出任务;
161.将目标导出任务写入导出任务信息表,并将目标导出任务的状态配置为导出中状态。
162.在本公开的一种示例性实施例中,基于前述实施例,上述的导出文件创建模块620还被具体陪配置为:
163.根据所述导出文件标识和各所述异步线程的线程标识,生成各所述异步线程所对应的子导出文件标识;
164.获取所述导出路径和所述子导出文件标识,以创建各所述异步线程所对应的子导出文件。
165.在本公开的一种示例性实施例中,基于前述实施例,上述的目标导出文件生成模块630还被具体配置为:
166.获取待导出数据量和预设的异步线程的数量;
167.根据所述待导出数据量和所述预设的异步线程的数量,为各所述异步线程分配子待导出数据量;
168.各所述异步线程并行的根据所述待导出数据的查询条件和所述子待导出数据量,分页查询子待导出数据;
169.各所述异步线程按照所述分页查询的顺序,将查询到的子待导出数据分别写入到各所述异步线程所对应的子导出文件中;
170.合并所述各子导出文件,以生成目标导出文件。
171.在本公开的一种示例性实施例中,基于前述实施例,数据导出装置600还包括目标导出文件存储模块,该模块被配置为:
172.上传所述目标导出文件至存储平台;
173.接收所述存储平台发送的所述目标导出文件的统一资源定位符;
174.将所述统一资源定位符写入所述导出任务信息表,以关联所述统一资源定位符和所述导出文件标识。
175.在本公开的一种示例性实施例中,基于前述实施例,上述的目标导出文件存储模块还被具体配置为:
176.所述目标导出文件上传成功时,将所述导出文件标识所对应的目标导出任务的状态从导出中状态更新为成功状态;
177.当所述目标导出文件上传失败时,将所述导出文件标识所对应的目标导出任务的状态从导出中状态更新为失败状态,并记录所述失败状态的失败标识,其中,所述失败标识包括导出异常或上传异常。
178.在本公开的一种示例性实施例中,基于前述实施例,数据导出装置600还包括目标
导出文件下载模块,该模块被配置为:
179.向所述客户端返回所述导出文件标识,所述导出文件标识用于指示所述客户端确定所述目标导出文件的统一资源定位符;
180.响应于所述客户端对所述统一资源定位符的触发操作,根据所述统一资源定位符在所述客户端下载所述目标导出文件。
181.在本公开的一种示例性实施例中,基于前述实施例,上述的目标导出文件下载模块,还被具体配置为:
182.查询导出任务信息表,以确定所述导出任务信息表中是否存在查询条件与所述导出参数信息中的查询条件相同的导出任务;
183.如果存在,则向所述客户端发送提示信息,所述提示信息用于指示所述客户端确定所述导出任务的目标导出文件所对应的统一资源定位符;
184.响应于所述客户端对所述统一资源定位符的触发操作,根据所述统一资源定位符在所述客户端下载所述目标导出文件。
185.上述数据导出装置中各单元的具体细节已经在对应的数据导出方法中进行了详细的描述,因此此处不再赘述。
186.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
187.此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
188.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
189.在本公开示例性实施方式中,还提供了一种能够实现上述方法的计算机存储介质。其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
190.参考图7所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品700,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
191.所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
192.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
193.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
194.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
195.此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
196.所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
197.下面参照图8来描述根据本公开的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
198.如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830以及显示单元840。
199.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图2中所示的:步骤s210,响应于客户端的数据导出请求,获取导出参数信息,并生成待导出数据的导出文件标识,导出参数信息包括所述待导出数据的查询条件;步骤s220,通过异步线程获取待导出数据的导出路径,并根据导出路径和导出文件标识创建导出文件;步骤s230,异步线程根据待导出数据的查询条件分页查询待导出数据,按照分页查询的顺序将查询到的待导出数据写入到导出文件中,以生成目标导出文件。
200.又如,,所述处理单元810还可以执行如图2-5中所示的各个步骤。
201.存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(rom)8203。
202.存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
203.总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
204.电子设备800也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
205.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
206.此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
207.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献