CN111797337A - 导出页面的生成方法及装置 - Google Patents

导出页面的生成方法及装置 Download PDF

Info

Publication number
CN111797337A
CN111797337A CN202010676610.9A CN202010676610A CN111797337A CN 111797337 A CN111797337 A CN 111797337A CN 202010676610 A CN202010676610 A CN 202010676610A CN 111797337 A CN111797337 A CN 111797337A
Authority
CN
China
Prior art keywords
export
page
task
derived
sql statement
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
Application number
CN202010676610.9A
Other languages
English (en)
Inventor
刘四亚
刘蓬飞
刘鹏飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Qianzhen Information Technology Co ltd
Original Assignee
Shanghai Qianzhen Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Qianzhen Information Technology Co ltd filed Critical Shanghai Qianzhen Information Technology Co ltd
Priority to CN202010676610.9A priority Critical patent/CN111797337A/zh
Publication of CN111797337A publication Critical patent/CN111797337A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种导出页面的生成方法及装置、电子设备、计算机可读存储介质,所述方法包括:获取公共导出页面的html内容并存储至公共导出页面url;接收业务页面发送的用于导出数据的第一请求;响应于所述第一请求,获取导出任务属性信息,所述导出任务属性信息包括所述业务页面对应的导出需求模块的模块标识以及所述公共导出页面url;根据所述公共导出页面url获取所述模块标识对应的导出页面,所述导出页面用于提供数据导出服务。将业务系统和导出服务拆分开来,多个业务系统使用同一导出服务,实现导出业务的复用,将导出功能服务化,使导出功能服务易扩展、高可用、高可靠,解决业务代码冗余的问题,极大减少了修改代码时的工作量。

Description

导出页面的生成方法及装置
技术领域
本申请涉及信息处理的技术领域,尤其涉及导出页面的生成方法及装置、电子设备、计算机可读存储介质。
背景技术
现有的数据导出技术中,每个业务系统独立实现自己的导出功能,使用jav a代码方式执行导出任务,其导出流程主要包括:(1)用户通过浏览器向业务系统服务器发起导出请求;(2)业务系统服务器根据查询条件参数拼接导出SQL;(3)业务系统服务器调用java库导出到本地文件;(4)业务系统服务器读取本地文件返回数据流给浏览器。这种导出方式的主要缺陷包括以下几点:(1)各业务系统独立导出,扩展性低,每个业务系统都有自己的导出服务代码,导致业务代码冗余;(2)当多个业务系统需要增加新的功能时,开发人员需要在每个业务系统上都开发相同的功能,这给开发人员增加了不必要的工作量。
基于此,需要提供一种新的导出方式,解决各业务系统独立导出导致扩展性低,开发人员重复工作量大的问题。
发明内容
本申请的目的在于提供导出页面的生成方法及装置、电子设备、计算机可读存储介质,解决各业务系统独立导出导致扩展性低,开发人员重复工作量大的问题。
本申请的目的采用以下技术方案实现:
第一方面,本申请提供了一种导出页面的生成方法,所述方法包括:获取公共导出页面的html内容并存储至公共导出页面url;接收业务页面发送的用于导出数据的第一请求;响应于所述第一请求,获取导出任务属性信息,所述导出任务属性信息包括所述业务页面对应的导出需求模块的模块标识以及所述公共导出页面url;根据所述公共导出页面url获取所述模块标识对应的导出页面,所述导出页面用于提供数据导出服务。该技术方案的有益效果在于,针对数据导出请求做分布式部署,修改了部分业务执行的方式,将业务系统和导出服务拆分开来,各自进行维护和部署,多个业务系统使用同一导出服务,实现导出业务的复用,将导出功能服务化,使导出功能服务易扩展、高可用、高可靠。从业务系统中拆分出导出业务后,业务系统压力降低,各个业务系统利用公共导出页面url动态生成导出页面,公共导出页面url只需提供一套代码,解决业务代码冗余的问题,当多个业务系统需要增加新的导出需求时,开发人员只需在公共导出页面url上修改一次,极大减少了开发人员的工作量。
在一些可能的实现方式中,所述根据所述公共导出页面url获取所述模块标识对应的导出页面,包括:获取所述模块标识对应的可选字段;根据所述公共导出页面url和所述可选字段获取所述模块标识对应的导出页面。该技术方案的有益效果在于,在动态配置的导出页面中,针对不同的导出需求模块提供不同的可选字段,符合实际应用中的需求。
在一些可能的实现方式中,所述第一请求携带查询条件参数;所述方法还包括:获取所述查询条件参数对应的第一SQL语句;接收所述导出页面发送的用于执行导出任务的第二请求,所述第二请求携带所述导出任务属性信息、所述第一SQL语句和导出字段;响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。该技术方案的有益效果在于,使用导出页面提供执行导出任务的功能,用户通过导出页面发送执行导出任务的请求,由此可以根据请求携带的信息执行导出任务。
在一些可能的实现方式中,所述导出任务属性信息还包括所述模块标识对应的导出数量限制参数,所述第二请求还携带导出文件类型;所述响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务,包括:响应于所述第二请求,检测所述导出数量限制参数、所述第一SQL语句和所述导出文件类型是否满足预定规则,所述预定规则包括以下至少一种:所述导出数量限制参数非空、所述第一SQL语句非空和所述导出文件类型非空;若满足,则根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。该技术方案的有益效果在于,在执行导出任务之前对请求携带的参数进行有效性检测,参数满足预定规则表明参数有效,方可执行导出任务。
在一些可能的实现方式中,所述响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务,包括:响应于所述第二请求,获取所述模块标识对应的导出类型;若所述导出类型是非下载导出类型,则将所述导出任务属性信息、所述第一SQL语句和所述导出字段中的至少一种封装为导出任务消息;将所述导出任务消息发布至消息队列,以使消费者从所述消息队列中取出所述导出任务消息并执行所述导出任务。该技术方案的有益效果在于,将非下载导出类型的导出任务发布给消息队列,利用消息队列执行异步下载以缓解服务器压力。例如当实时导出业务出现用户请求高并发时,数据库压力增加影响业务操作,大量导出任务的消息积压在消息队列中,导出服务可以动态修改消息队列的配置,添加足够数量的消费者对任务进行消费以缓解消息服务器的压力。
在一些可能的实现方式中,所述响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务,包括:响应于所述第二请求,以所述第一SQL语句作为子查询,以所述导出字段作为查询字段,获取第二SQL语句;根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。该技术方案的有益效果在于,利用原SQL语句和导出字段重新构造导出SQL语句以执行导出任务。
在一些可能的实现方式中,所述第二请求还携带导出文件类型;所述根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务,包括:获取所述模块标识对应的导出类型;若所述导出类型是下载导出类型,则检测所述导出文件类型是否是csv类型;若所述导出文件类型是csv类型,则使用mysqluldr工具或者mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务;若所述导出文件类型不是csv类型,则使用easyexcel工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。现有技术使用java导出功能消耗大量系统资源,速度慢,该技术方案的有益效果在于,针对不同的导出文件类型,使用不同工具导出本地文件,相对于java导出功能而言,提高导出速度,减少对服务器性能的影响。
在一些可能的实现方式中,所述若所述导出文件类型是csv类型,则使用mysqluldr工具或者mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务,包括:若所述导出文件类型是csv类型,则检测所述第二SQL语句的字节数长度是否大于预定长度;若不大于所述预定长度,则使用所述mysqluldr工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务;若大于所述预定长度,则使用所述mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。该技术方案的有益效果在于,根据SQL语句的字节数长度选用mysqluldr工具或者mysql的-e参数执行导出任务。
第二方面,本申请提供了一种导出页面的生成装置,所述装置包括:内容存储模块,用于获取公共导出页面的html内容并存储至公共导出页面url;请求接收模块,用于接收业务页面发送的用于导出数据的第一请求;信息获取模块,用于响应于所述第一请求,获取导出任务属性信息,所述导出任务属性信息包括所述业务页面对应的导出需求模块的模块标识以及所述公共导出页面url;页面获取模块,用于根据所述公共导出页面url获取所述模块标识对应的导出页面,所述导出页面用于提供数据导出服务。
在一些可能的实现方式中,所述第一请求携带查询条件参数;所述装置还包括任务执行模块,所述任务执行模块用于:获取所述查询条件参数对应的第一SQL语句;接收所述导出页面发送的用于执行导出任务的第二请求,所述第二请求携带所述导出任务属性信息、所述第一SQL语句和导出字段;响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
在一些可能的实现方式中,所述页面获取模块用于:获取所述模块标识对应的可选字段;根据所述公共导出页面url和所述可选字段获取所述模块标识对应的导出页面。
在一些可能的实现方式中,所述导出任务属性信息还包括所述模块标识对应的导出数量限制参数,所述第二请求还携带导出文件类型;所述任务执行模块还用于:响应于所述第二请求,检测所述导出数量限制参数、所述第一SQL语句和所述导出文件类型是否满足预定规则,所述预定规则包括以下至少一种:所述导出数量限制参数非空、所述第一SQL语句非空和所述导出文件类型非空;若满足,则根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
在一些可能的实现方式中,所述任务执行模块还用于:响应于所述第二请求,获取所述模块标识对应的导出类型;若所述导出类型是非下载导出类型,则将所述导出任务属性信息、所述第一SQL语句和所述导出字段中的至少一种封装为导出任务消息;将所述导出任务消息发布至消息队列,以使消费者从所述消息队列中取出所述导出任务消息并执行所述导出任务。
在一些可能的实现方式中,所述任务执行模块还用于:响应于所述第二请求,以所述第一SQL语句作为子查询,以所述导出字段作为查询字段,获取第二SQL语句;根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
在一些可能的实现方式中,所述第二请求还携带导出文件类型;所述任务执行模块还用于:获取所述模块标识对应的导出类型;若所述导出类型是下载导出类型,则检测所述导出文件类型是否是csv类型;若所述导出文件类型是csv类型,则使用mysqluldr工具或者mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务;若所述导出文件类型不是csv类型,则使用easyexcel工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
在一些可能的实现方式中,所述任务执行模块还用于:若所述导出文件类型是csv类型,则检测所述第二SQL语句的字节数长度是否大于预定长度;若不大于所述预定长度,则使用所述mysqluldr工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务;若大于所述预定长度,则使用所述mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
第三方面,本申请提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法的步骤。
附图说明
下面结合附图和实施例对本申请进一步说明。
图1是本申请实施例提供的一种导出页面的生成方法的流程示意图;
图2是本申请实施例提供的一种提供导出服务的原理示意图;
图3是本申请实施例提供的一种执行导出任务的流程示意图;
图4是本申请实施例提供的一种执行导出任务的流程示意图;
图5是本申请实施例提供的一种执行导出任务的流程示意图;
图6是本申请实施例提供的一种消息代理模型的结构示意图;
图7是本申请实施例提供的一种执行导出任务的流程示意图;
图8是本申请实施例提供的一种执行导出任务的流程示意图;
图9是本申请实施例提供的一种执行导出任务的流程示意图;
图10是本申请实施例提供的一种导出页面的生成方法的流程示意图;
图11是本申请实施例提供的一种导出页面的生成装置的结构示意图;
图12是本申请实施例提供的一种电子设备的结构示意图;
图13是本申请实施例提供的一种用于实现导出页面的生成方法的程序产品的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
参见图1,本申请实施例提供了提供了一种导出页面的生成方法,用于为多个业务系统提供动态配置的导出页面,所述方法包括步骤S101~S104。
步骤S101:获取公共导出页面的html内容并存储至公共导出页面url。其中,url是uniform resource locator的缩写,意为统一资源定位符。存储于公共导出页面url的html内容便于开发人员维护,维护后对所有业务系统同时生效,即业务系统再次发送数据导出请求时,所调用的即是维护后的html内容。
步骤S102:接收业务页面发送的用于导出数据的第一请求。业务页面是业务系统中的页面,一般通过浏览器展示给用户。第一请求用于导出数据,可以携带查询条件参数,查询条件参数例如是用户标识和时间信息,用户标识例如是用户名称或者用户编码,时间信息例如包括起始时间和/或截止时间。
步骤S103:响应于所述第一请求,获取导出任务属性信息,所述导出任务属性信息包括所述业务页面对应的导出需求模块的模块标识以及所述公共导出页面url。业务页面与导出需求模块之间的关系可以是一对一,也可以是多对一,一对一即一个业务页面对应一个导出需求模块,多对一即多个业务页面对应同一导出需求模块。模块标识例如是模块名称或者模块编码,每个导出需求模块对应唯一的模块标识。
步骤S104:根据所述公共导出页面url获取所述模块标识对应的导出页面,所述导出页面用于提供数据导出服务。
利用动态配置的导出页面提供导出服务的工作原理如图2所示。由此,针对数据导出请求做分布式部署,修改了部分业务执行的方式,将业务系统和导出服务拆分开来,各自进行维护和部署,多个业务系统使用同一导出服务,实现导出业务的复用,将导出功能服务化,使导出功能服务易扩展、高可用、高可靠。从业务系统中拆分出导出业务后,业务系统压力降低,各个业务系统利用公共导出页面url动态生成导出页面,公共导出页面url只需提供一套代码,解决业务代码冗余的问题,当多个业务系统需要增加新的导出需求时,开发人员只需在公共导出页面url上修改一次,极大减少了开发人员的工作量。
在一些可能的实现方式中,可以在动态配置的导出页面中,针对不同的导出需求模块提供不同的可选字段,由此更加符合实际应用中的需求。所述步骤S104可以包括:获取所述模块标识对应的可选字段;根据所述公共导出页面url和所述可选字段获取所述模块标识对应的导出页面。可选字段包括一个或者多个字段,不同模块标识对应的可选字段一般而言是不同的。
具体而言,所述根据所述公共导出页面url和所述可选字段获取所述模块标识对应的导出页面的步骤,可以包括:使用所述公共导出页面url赋值iframe标签的src属性,使用所述可选字段赋值select标签的options集合,将所述iframe标签和所述select标签添加至html页面中,获取所述模块标识对应的导出页面。
在一些可能的实现方式中,可以使用导出页面提供执行导出任务的功能,用户通过导出页面发送执行导出任务的请求,由此可以根据请求携带的信息执行导出任务。具体而言,参见图3,所述第一请求携带查询条件参数;所述方法还包括步骤S105~S107。
步骤S105:获取所述查询条件参数对应的第一SQL语句。例如可以根据查询条件参数拼接第一SQL语句。还可以对拼接后的第一SQL语句进行md5加密,提升安全性。md5加密主要增强算法复杂度和不可逆性,具有普遍、稳定和快速的特点,广泛应用于普通数据的加密保护领域。
步骤S106:接收所述导出页面发送的用于执行导出任务的第二请求,所述第二请求携带所述导出任务属性信息、所述第一SQL语句和导出字段。其中,导出字段可以是用户从可选字段中确定的至少一个字段。
步骤S107:响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
在一些可能的实现方式中,可以在执行导出任务之前对请求携带的参数进行有效性检测,参数满足预定规则表明参数有效,方可执行导出任务。具体而言,参见图4,所述导出任务属性信息还可以包括所述模块标识对应的导出数量限制参数,所述第二请求还可以携带导出文件类型;所述步骤S107可以包括步骤S201~S202。其中,导出数量限制参数例如是1000,导出文件类型例如包括csv、xls和xlsx。
步骤S201:响应于所述第二请求,检测所述导出数量限制参数、所述第一SQL语句和所述导出文件类型是否满足预定规则,所述预定规则包括以下至少一种:所述导出数量限制参数非空、所述第一SQL语句非空和所述导出文件类型非空。
步骤S202:若满足,则根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
继续参见图4,步骤S107还可以包括步骤S203:若不满足,则不执行所述导出任务。步骤S203还可以包括:提示用户导出任务失败。
在一些可能的实现方式中,可以将非下载导出类型的导出任务发布给消息队列,利用消息队列执行异步下载以缓解服务器压力,在实际应用中主要提供外围业务系统导出。具体而言,参见图5,所述步骤S107可以包括步骤S301~S303。
步骤S301:响应于所述第二请求,获取所述模块标识对应的导出类型。导出类型例如包括下载导出类型和非下载导出类型。
步骤S302:若所述导出类型是非下载导出类型,则将所述导出任务属性信息、所述第一SQL语句和所述导出字段中的至少一种封装为导出任务消息。
步骤S303:将所述导出任务消息发布至消息队列,以使消费者从所述消息队列中取出所述导出任务消息并执行所述导出任务。
利用消息队列执行导出任务的消息代理模型如图6所示,消息代理模型中各参数的含义如下所示:
MQ:消息队列中间件;
Exchange:MQ中的一个组件,也被称为交换机;
Queue:MQ中的一个组件,也被称为消息队列;
Producer:消息生产者,发布消息的一方;
Consumer:消息接受者,订阅消息的一方。
其中Producer发布导出任务消息,Consumer接受导出消息并生成导出文件,当导出业务存在高并发时,利用消息队列可以缓解导出业务的压力。本申请实施例在利用消息队列执行导出任务时,消息队列中间件可以使用RabbitMQ,RabbitMQ作为AMQP协议的实现,提供了多个核心组件的高级抽象。
例如当实时导出业务出现用户请求高并发时,数据库压力增加影响业务操作,大量导出任务的消息积压在消息队列中,导出服务可以动态修改消息队列的配置,添加足够数量的消费者对任务进行消费以缓解消息服务器的压力。
在一些可能的实现方式中,可以利用原SQL语句和导出字段重新构造导出SQL语句以执行导出任务。具体而言,参见图7,所述步骤S107可以包括步骤S401~S402。
步骤S401:响应于所述第二请求,以所述第一SQL语句作为子查询,以所述导出字段作为查询字段,获取第二SQL语句。
步骤S402:根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
现有技术使用java导出功能消耗大量系统资源,速度慢,在一些可能的实现方式中,可以针对不同的导出文件类型,使用不同工具导出本地文件,相对于java导出功能而言,提高导出速度,减少对服务器性能的影响。具体而言,参见图8,所述第二请求还可以携带导出文件类型;所述步骤S402可以包括步骤S4021~S4024。
步骤S4021:获取所述模块标识对应的导出类型。
步骤S4022:若所述导出类型是下载导出类型,则检测所述导出文件类型是否是csv类型。
步骤S4023:若所述导出文件类型是csv类型,则使用mysqluldr工具或者mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。该步骤可以通过执行shell脚本的方式,使用mysqluldr工具导出或者使用mysql命令导出,替换原本的java导出。导出工具mysqluldr基于sqluldr2,sqluldr2是专用于oracle的文本导出工具,效率比普通导出快70%。mysqluldr在sqluldr2的基础上进行了改造,使其可以为mysql所用,使用mysqluldr工具可以实施快速导出。mysql的-e参数可以用shell脚本操作mysql数据库,使用mysql的-e参数可以执行SQL的各种操作,例如增加、删除、修改和查询操作。
步骤S4024:若所述导出文件类型不是csv类型,则使用easyexcel工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。easyexcel工具是java解析excel工具,优势是占用内存少。其中,导出数量过大时执行分批导出,每次导出的结果追加至已经导出的本地文件。
在一些可能的实现方式中,可以根据SQL语句的字节数长度选用mysqluldr工具或者mysql的-e参数执行导出任务。具体而言,参见图9,所述步骤S4023可以包括步骤S501~S503。
步骤S501:若所述导出文件类型是csv类型,则检测所述第二SQL语句的字节数长度是否大于预定长度。预定长度是预先设定的字节数长度,例如是8000字节。
步骤S502:若不大于所述预定长度,则使用所述mysqluldr工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
步骤S503:若大于所述预定长度,则使用所述mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
不同导出方式的执行性能不同,例如csv类型可以使用mysqluldr工具导出和java代码导出,其它类型只能使用java代码导出。根据第二SQL语句的字节数长度选择对应的导出方式,由此选择最合适的导出方式以获取最大的执行性能。
以对500000条数据进行导出测试为例,导出类型是下载导出,导出文件类型是csv类型,且第二SQL语句不大于8000字节。采用的服务器配置为:(1)Cpu:
Figure BDA0002584276450000111
CoreTM i3-8100CPU@3.60GHz×4,L1cache:32K;(2)Memory:4G,DDR4-2666MHz;(3)Disk:HDD 500GB,5400rpm。现有的导出方式其导出过程总耗时是64s,使用本申请实施例提供的导出服务其导出过程总耗时是13s,相比现有技术,使用msqluldr工具导出文件的方式将执行时间降低了80%。传统应用导出功能未服务化,且使用java代码执行导出过慢,本申请实施例实现了导出功能服务化,且灵活使用mysqluldr工具、mysql命令、easyexcel工具和消息队列的方式提供导出服务,提高导出效率。
参见图10,本申请实施例还提供了一种导出方法,所述方法包括步骤S601~S616。
步骤S601:用户通过浏览器向业务系统服务器发送导出数据的请求。浏览器作为业务系统的客户端,提供业务系统与用户之间的数据交互。用户可以在浏览器中填写可选条件参数,可选条件参数例如是时间段。请求携带的查询参数例如包括用户名和时间段。
步骤S602:业务系统服务器将查询条件参数拼接成一条查询SQL语句,对该查询SQL语句进行加密,从业务系统配置文件中读取导出任务属性信息,向浏览器返回加密的查询SQL和导出任务属性信息。其中,导出任务属性信息包括导出需求模块ID、公共导出页面url和导出数量参数。
步骤S603:浏览器从业务系统服务器的响应中获取导出页面url,赋值给iframe标签的src属性,然后操作DOM添加iframe标签到html页面中,生成带有可选字段的导出页面,通过浏览器提供给用户。该导出页面是导出系统的公共页面。
步骤S604:用户在导出系统公共页面的可选字段中选择需要导出的字段,点击确定按钮直接向导出系统发送执行导出任务请求,请求携带的参数为导出任务属性信息、查询SQL语句以及用户在导出系统公共页面选择的导出字段。
步骤S605:导出系统服务器处理执行导出任务请求,提取出导出任务属性信息、查询SQL语句和导出字段。
步骤S606:导出系统服务器检测模块ID对应的导出类型是否是下载导出类型,若否则执行步骤S607,若是则执行步骤S608。
步骤S607:对于非下载方式,导出系统服务器将查询SQL语句、导出任务属性信息以及导出字段封装为导出任务消息,然后将导出任务消息发布到到消息队列中,等待消费者业务系统取出导出任务消息并执行导出任务。发布导出任务消息成功后返回成功响应消息给浏览器,执行导出任务请求流程结束。
步骤S608:导出系统服务器使查询SQL语句作为子查询,别名为t,以表t为查询表,以导出字段为查询字段,拼接出一个新的SQL语句作为导出SQL语句。该导出SQL语句是导出任务最终执行的SQL语句,通过该SQL语句能够导出用户想要查询的数据。
步骤S609:导出系统服务器根据导出文件类型执行导出逻辑。
步骤S610:导出系统服务器检测导出文件类型是否是csv类型,若否则执行步骤S611,若是则执行步骤S612。
步骤S611:导出系统服务器使用easyexcel工具分批导出到本地,执行步骤S615。
步骤S612:导出系统服务器检测导出SQL是否超过8000字节,若否则执行步骤S613,若是则执行步骤S614。
步骤S613:导出系统服务器使用mysqluldr工具导出到本地,执行步骤S615。
步骤S614:导出系统服务器使用mysql命令带-e参数的方式导出到本地,执行步骤S615。
步骤S615:导出系统服务器读取导出的本地文件,使用io流的方式将字节流写入到请求响应中,发送给浏览器。
步骤S616:导出系统服务器将通过下载方式成功执行导出任务的记录保存到数据库中,执行导出任务请求流程结束。
参见图11,本申请实施例还提供了一种导出页面的生成装置,所述装置包括:内容存储模块201,用于获取公共导出页面的html内容并存储至公共导出页面url;请求接收模块202,用于接收业务页面发送的用于导出数据的第一请求;信息获取模块203,用于响应于所述第一请求,获取导出任务属性信息,所述导出任务属性信息包括所述业务页面对应的导出需求模块的模块标识以及所述公共导出页面url;页面获取模块204,用于根据所述公共导出页面url获取所述模块标识对应的导出页面,所述导出页面用于提供数据导出服务。
在一些可能的实现方式中,所述第一请求携带查询条件参数;所述装置还包括任务执行模块205,所述任务执行模块205用于:获取所述查询条件参数对应的第一SQL语句;接收所述导出页面发送的用于执行导出任务的第二请求,所述第二请求携带所述导出任务属性信息、所述第一SQL语句和导出字段;响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
在一些可能的实现方式中,所述页面获取模块204用于:获取所述模块标识对应的可选字段;根据所述公共导出页面url和所述可选字段获取所述模块标识对应的导出页面。
在一些可能的实现方式中,所述导出任务属性信息还包括所述模块标识对应的导出数量限制参数,所述第二请求还携带导出文件类型;所述任务执行模块205还用于:响应于所述第二请求,检测所述导出数量限制参数、所述第一SQL语句和所述导出文件类型是否满足预定规则,所述预定规则包括以下至少一种:所述导出数量限制参数非空、所述第一SQL语句非空和所述导出文件类型非空;若满足,则根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
在一些可能的实现方式中,所述任务执行模块205还用于:响应于所述第二请求,获取所述模块标识对应的导出类型;若所述导出类型是非下载导出类型,则将所述导出任务属性信息、所述第一SQL语句和所述导出字段中的至少一种封装为导出任务消息;将所述导出任务消息发布至消息队列,以使消费者从所述消息队列中取出所述导出任务消息并执行所述导出任务。
在一些可能的实现方式中,所述任务执行模块205还用于:响应于所述第二请求,以所述第一SQL语句作为子查询,以所述导出字段作为查询字段,获取第二SQL语句;根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
在一些可能的实现方式中,所述第二请求还携带导出文件类型;所述任务执行模块205还用于:获取所述模块标识对应的导出类型;若所述导出类型是下载导出类型,则检测所述导出文件类型是否是csv类型;若所述导出文件类型是csv类型,则使用mysqluldr工具或者mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务;若所述导出文件类型不是csv类型,则使用easyexcel工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
在一些可能的实现方式中,所述任务执行模块205还用于:若所述导出文件类型是csv类型,则检测所述第二SQL语句的字节数长度是否大于预定长度;若不大于所述预定长度,则使用所述mysqluldr工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务;若大于所述预定长度,则使用所述mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
参见图12,本申请实施例还提供了一种电子设备3,电子设备3包括至少一个存储器31、至少一个处理器32以及连接不同平台系统的总线33。
存储器31可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)311和/或高速缓存存储器312,还可以进一步包括只读存储器(ROM)313。
其中,存储器31还存储有计算机程序,程序产品4可以被处理器32执行,使得处理器32执行本申请实施例中导出页面的生成方法的步骤(如图1所示)。存储器31还可以包括具有一组(至少一个)程序模块315的程序/实用工具314,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
相应的,处理器32可以执行上述的程序产品4,以及可以执行程序/实用工具314。
总线33可以为表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备3也可以与一个或多个外部设备34例如键盘、指向设备、蓝牙设备等通信,还可与一个或者多个能够与该电子设备3交互的设备通信,和/或与使得该电子设备3能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口35进行。并且,电子设备3还可以通过网络适配器36与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器36可以通过总线33与电子设备3的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备3使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现本申请实施例中导出页面的生成方法的步骤(如图1所示)。图13示出了本实施例提供的用于实现上述方法的程序产品4,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品4不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品4可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本申请从使用目的上,效能上,进步及新颖性等观点进行阐述,其设置有的实用进步性,已符合专利法所强调的功能增进及使用要件,本申请以上的说明及附图,仅为本申请的较佳实施例而已,并非以此局限本申请,因此,凡一切与本申请构造,装置,特征等近似、雷同的,即凡依本申请专利申请范围所作的等同替换或修饰等,皆应属本申请的专利申请保护的范围之内。

Claims (10)

1.一种导出页面的生成方法,其特征在于,所述方法包括:
获取公共导出页面的html内容并存储至公共导出页面url;
接收业务页面发送的用于导出数据的第一请求;
响应于所述第一请求,获取导出任务属性信息,所述导出任务属性信息包括所述业务页面对应的导出需求模块的模块标识以及所述公共导出页面url;
根据所述公共导出页面url获取所述模块标识对应的导出页面,所述导出页面用于提供数据导出服务。
2.根据权利要求1所述的导出页面的生成方法,其特征在于,所述根据所述公共导出页面url获取所述模块标识对应的导出页面,包括:
获取所述模块标识对应的可选字段;
根据所述公共导出页面url和所述可选字段获取所述模块标识对应的导出页面。
3.根据权利要求1所述的导出页面的生成方法,其特征在于,所述第一请求携带查询条件参数;
所述方法还包括:
获取所述查询条件参数对应的第一SQL语句;
接收所述导出页面发送的用于执行导出任务的第二请求,所述第二请求携带所述导出任务属性信息、所述第一SQL语句和导出字段;
响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
4.根据权利要求3所述的导出页面的生成方法,其特征在于,所述导出任务属性信息还包括所述模块标识对应的导出数量限制参数,所述第二请求还携带导出文件类型;
所述响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务,包括:
响应于所述第二请求,检测所述导出数量限制参数、所述第一SQL语句和所述导出文件类型是否满足预定规则,所述预定规则包括以下至少一种:所述导出数量限制参数非空、所述第一SQL语句非空和所述导出文件类型非空;
若满足,则根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
5.根据权利要求3所述的导出页面的生成方法,其特征在于,所述响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务,包括:
响应于所述第二请求,获取所述模块标识对应的导出类型;
若所述导出类型是非下载导出类型,则将所述导出任务属性信息、所述第一SQL语句和所述导出字段中的至少一种封装为导出任务消息;
将所述导出任务消息发布至消息队列,以使消费者从所述消息队列中取出所述导出任务消息并执行所述导出任务。
6.根据权利要求3所述的导出页面的生成方法,其特征在于,所述响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务,包括:
响应于所述第二请求,以所述第一SQL语句作为子查询,以所述导出字段作为查询字段,获取第二SQL语句;
根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
7.根据权利要求6所述的导出页面的生成方法,其特征在于,所述第二请求还携带导出文件类型;
所述根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务,包括:
获取所述模块标识对应的导出类型;
若所述导出类型是下载导出类型,则检测所述导出文件类型是否是csv类型;
若所述导出文件类型是csv类型,则使用mysqluldr工具或者mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务;
若所述导出文件类型不是csv类型,则使用easyexcel工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
8.根据权利要求7所述的导出页面的生成方法,其特征在于,所述若所述导出文件类型是csv类型,则使用mysqluldr工具或者mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务,包括:
若所述导出文件类型是csv类型,则检测所述第二SQL语句的字节数长度是否大于预定长度;
若不大于所述预定长度,则使用所述mysqluldr工具,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务;
若大于所述预定长度,则使用所述mysql的-e参数,根据所述导出任务属性信息和所述第二SQL语句执行所述导出任务。
9.一种导出页面的生成装置,其特征在于,所述装置包括:
内容存储模块,用于获取公共导出页面的html内容并存储至公共导出页面url;
请求接收模块,用于接收业务页面发送的用于导出数据的第一请求;
信息获取模块,用于响应于所述第一请求,获取导出任务属性信息,所述导出任务属性信息包括所述业务页面对应的导出需求模块的模块标识以及所述公共导出页面url;
页面获取模块,用于根据所述公共导出页面url获取所述模块标识对应的导出页面,所述导出页面用于提供数据导出服务。
10.根据权利要求9所述的导出页面的生成装置,其特征在于,所述第一请求携带查询条件参数;
所述装置还包括任务执行模块,所述任务执行模块用于:
获取所述查询条件参数对应的第一SQL语句;
接收所述导出页面发送的用于执行导出任务的第二请求,所述第二请求携带所述导出任务属性信息、所述第一SQL语句和导出字段;
响应于所述第二请求,根据所述导出任务属性信息、所述第一SQL语句和所述导出字段执行导出任务。
CN202010676610.9A 2020-07-14 2020-07-14 导出页面的生成方法及装置 Pending CN111797337A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010676610.9A CN111797337A (zh) 2020-07-14 2020-07-14 导出页面的生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010676610.9A CN111797337A (zh) 2020-07-14 2020-07-14 导出页面的生成方法及装置

Publications (1)

Publication Number Publication Date
CN111797337A true CN111797337A (zh) 2020-10-20

Family

ID=72806908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010676610.9A Pending CN111797337A (zh) 2020-07-14 2020-07-14 导出页面的生成方法及装置

Country Status (1)

Country Link
CN (1) CN111797337A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113704213A (zh) * 2021-08-20 2021-11-26 辽宁振兴银行股份有限公司 一种基于sqlldr2和ogg数据同步的实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919684A (zh) * 2017-03-02 2017-07-04 百度在线网络技术(北京)有限公司 数据导出方法、装置、设备及存储介质
US20190042631A1 (en) * 2017-08-02 2019-02-07 Sap Se Data Export Job Engine
CN110941654A (zh) * 2019-11-25 2020-03-31 杭州晨鹰军泰科技有限公司 基于配置模板的数据查询显示系统、方法、设备及介质
CN110955674A (zh) * 2019-10-21 2020-04-03 江苏苏宁物流有限公司 基于java服务的异步导出方法及组件

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919684A (zh) * 2017-03-02 2017-07-04 百度在线网络技术(北京)有限公司 数据导出方法、装置、设备及存储介质
US20190042631A1 (en) * 2017-08-02 2019-02-07 Sap Se Data Export Job Engine
CN110955674A (zh) * 2019-10-21 2020-04-03 江苏苏宁物流有限公司 基于java服务的异步导出方法及组件
CN110941654A (zh) * 2019-11-25 2020-03-31 杭州晨鹰军泰科技有限公司 基于配置模板的数据查询显示系统、方法、设备及介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113704213A (zh) * 2021-08-20 2021-11-26 辽宁振兴银行股份有限公司 一种基于sqlldr2和ogg数据同步的实现方法

Similar Documents

Publication Publication Date Title
CN109299131B (zh) 一种支持可信计算的spark查询方法及系统
US8812683B2 (en) Service scripting framework
CN111400061A (zh) 一种数据处理方法和系统
US8250226B2 (en) Generating one or more clients for generating one or more synthetic transactions with one or more web service operations
CN110688096B (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
CN110858202A (zh) 数据库查询语句中where子句的生成方法和生成装置
CN110795181A (zh) 基于跳转协议的应用程序界面展示方法、装置及电子设备
CN112612467A (zh) 一种处理基于qiankun的微前端架构的方法和装置
WO2023092580A1 (zh) 页面显示方法、装置、存储介质及电子设备
JP5039946B2 (ja) クライアント装置およびサーバ装置の間の通信を中継する技術
CN111459497A (zh) 基于webpack的资源包编译方法、系统、服务器和存储介质
JP4114873B2 (ja) サーバ装置、サービス方法、プログラム及び記録媒体
CN114900448A (zh) 一种微服务网关流量管理方法、装置和电子设备
CN114416169A (zh) 基于微前端的数据处理方法、介质、装置和计算设备
CN111586177A (zh) 集群会话防丢失方法及系统
CN114489622A (zh) 静态资源管理方法、Node.js应用、电子设备和存储介质
CN111797337A (zh) 导出页面的生成方法及装置
CN113641354A (zh) 业务数据处理方法、装置、电子设备及存储介质
CN112394907A (zh) 基于容器的交付系统构建方法、应用交付方法和交付系统
CN112559024A (zh) 一种生成交易码变更列表的方法和装置
CN110764769A (zh) 处理用户请求的方法和装置
CN116069725A (zh) 文件迁移方法、装置、设备、介质和程序产品
CN112346774A (zh) 一种应用安装包的生成方法和装置
CN113760274B (zh) 一种前端组件逻辑注入方法和装置
CN114327404A (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