CN111611307B - 报表导出方法及装置 - Google Patents
报表导出方法及装置 Download PDFInfo
- Publication number
- CN111611307B CN111611307B CN202010526882.0A CN202010526882A CN111611307B CN 111611307 B CN111611307 B CN 111611307B CN 202010526882 A CN202010526882 A CN 202010526882A CN 111611307 B CN111611307 B CN 111611307B
- Authority
- CN
- China
- Prior art keywords
- report
- downloading
- queue
- data file
- export
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000013515 script Methods 0.000 claims abstract description 46
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 230000006835 compression Effects 0.000 claims description 9
- 238000007906 compression Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 230000008901 benefit Effects 0.000 abstract description 11
- 230000003993 interaction Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000005856 abnormality Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了报表导出方法及装置、电子设备、计算机可读存储介质,该方法包括:设置脚本执行的并行度;并行执行多个脚本,对数据库中的批量报表进行下载导出。通过并行执行多个脚本,访问数据库并对数据表进行下载导出,因此支持同时下载多个报表,能够有效利用服务器资源,减少对应用系统的资源占用,从而降低服务器压力,提高报表数据的导出效率;能够根据数据库、服务器性能,方便地设置导出报表数据时的并行度,通过合理控制脚本执行的并行度,一方面充分发挥并行执行脚本所带来的效率优势,另一方面避免系统过度繁忙导致报表导出效率受到影响。
Description
技术领域
本申请涉及数据报表处理的技术领域,尤其涉及报表导出方法及装置、电子设备、计算机可读存储介质。
背景技术
当前报表系统有很多,报表数据量也比较大,而且业务人员会频繁下载报表数据进行数据分析。现有的下载技术是基于应用系统实现的,应用系统例如是java系统,使用java的技术导出报表,java会先访问数据库,将所需要数据写入到jvm(Java VirtualMachine,java虚拟机的缩写)中,然后再写入至excel文件中,如果报表系统处于高频率使用状态,同时有大批量数据下载的情况会占用大量的jvm和数据库的内存资源,服务器压力很大,下载导出数据缓慢,影响用户查询数据、下载报表的效率,严重时可能导致用户无法访问报表,影响系统的使用,用户的体验度变差。
现有技术公开了一种导出报表的方法,该方法包括:获取导出报表指令;根据所述导出报表指令,获取导出字段;根据所述导出字段,生成导出任务;将所述导出任务按顺序加入缓存队列;控制数据库系统按顺序执行所述缓存队列中的导出任务,以使所述数据库系统根据所述导出任务生成数据报表文件;将所述数据报表文件导出到应用程序目录,以使用户的终端设备通过所述应用程序目录下载所述数据报表文件。该方法的不足是,未能解决批量下载大数据量报表时服务器压力大导致下载导出缓慢的问题。
发明内容
本申请的目的在于提供报表导出方法及装置、电子设备、计算机可读存储介质,解决现有技术的不足,减少对应用系统的资源占用,从而降低服务器压力,并可根据数据库、服务器性能设置导出任务时的并行度。
本申请的目的采用以下技术方案实现:
第一方面,本申请提供了一种报表导出方法,所述方法包括:
设置脚本执行的并行度;
并行执行多个脚本,对数据库中的批量报表进行下载导出。
该技术方案的有益效果在于,通过并行执行多个脚本,访问数据库并对数据表进行下载导出,因此支持同时下载多个报表,能够有效利用服务器资源,减少对应用系统的资源占用,从而降低服务器压力,提高报表数据的导出效率;能够根据数据库、服务器性能,方便地设置导出报表数据时的并行度,通过合理控制脚本执行的并行度,一方面充分发挥并行执行脚本所带来的效率优势,另一方面避免系统过度繁忙导致报表导出效率受到影响。
可选地,所述方法还包括:
响应于报表的下载指令,生成所述报表对应的报表下载队列以及所述报表下载队列对应的SQL文件;
所述对数据库中的批量报表进行下载导出,包括:
利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表;
响应于所述报表的导出指令,导出所述报表。
该技术方案的有益效果在于,当用户对一个或多个报表发出下载指令时,为每个报表生成一个报表下载队列,并为每个报表下载队列生成对应的SQL文件,利用SQL文件下载对应的报表,由此每个报表下载任务对应一个队列,并行执行多个脚本,每个脚本消耗一个队列,即可同时执行多个队列的下载任务。
可选地,所述方法还包括:
将所述报表下载队列在状态表中的下载状态设置为等待执行;
所述利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表,包括:
访问所述状态表,判断是否存在等待执行的所述报表下载队列;
若存在等待执行的所述报表下载队列,则判断是否存在所述报表下载队列对应的SQL文件;
若存在所述报表下载队列对应的SQL文件,则执行所述SQL文件,生成所述报表下载队列对应的报表的数据文件。
该技术方案的有益效果在于,通过状态表来实时记录每个报表下载队列的下载状态,对等待执行的报表下载队列进行是否存在对应的SQL文件的判断,若存在则继续下载报表,由此能够及时发现SQL生成异常的问题,后续可以由开发人员排查异常,检验什么原因造成报表下载队列时文件未生成的情况。
可选地,所述利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表,还包括:
若不存在等待执行的所述报表下载队列,则每隔预定时长,访问所述状态表,判断是否存在等待执行的所述报表下载队列。
该技术方案的有益效果在于,查看状态表,如果当前状态表中不存在等待执行的报表下载队列,则按照预定时间间隔,重复访问状态表,由此能够及时发现当前是否存在等待执行的报表下载队列,加快报表下载任务的处理效率。
可选地,所述对数据库中的批量报表进行下载导出,还包括:
对所述数据文件进行切割。
该技术方案的有益效果在于,有些报表下载的数据会达到百万级的数据量,用户的终端设备可能会打不开数据文件,甚至可能出现终端设备卡死的情况,因此当数据量较大时,可以根据实际情况对数据文件进行切割,减小每个数据文件的数据量,避免出现用户打不开数据文件或者终端设备卡死的情况。
可选地,所述对数据库中的批量报表进行下载导出,还包括:
将所述数据文件的编码格式转换为GBK。
该技术方案的有益效果在于,用户的终端设备所采用的编码格式可能与数据库常用的编码格式不同,将数据文件的编码格式转换为用户的终端设备所采用的编码格式,避免用户打开数据文件时出现乱码的情况。
可选地,所述对数据库中的批量报表进行下载导出,还包括:
对所述数据文件进行压缩打包。
该技术方案的有益效果在于,减小数据文件的大小,减少下载导出数据文件所需要的时长,提高用户下载导出数据文件的效率。
可选地,所述响应于所述报表的导出指令,导出所述报表,包括:
获取所述数据文件的下载路径;
响应于所述报表的导出指令,根据所述数据文件的下载路径,将所述数据文件下载至终端设备。
该技术方案的有益效果在于,通过获取数据文件在服务器的下载路径,将数据文件下载至本地。
可选地,所述脚本是shell脚本。
该技术方案的有益效果在于,采用shell脚本,用户交互体验好,执行指令的速度快,并行执行时效率高,占用服务器资源少,并且允许管理人员自主设置并行度,因此管理人员可以根据实际应用中的需求设置合适的并行度。
第二方面,本申请提供了一种报表导出装置,所述装置包括:
并行设置模块,用于设置脚本执行的并行度;
导出模块,用于并行执行多个脚本,对数据库中的批量报表进行下载导出。
可选地,所述装置还包括:
队列生成模块,用于响应于报表的下载指令,生成所述报表对应的报表下载队列以及所述报表下载队列对应的SQL文件;
所述导出模块包括:
下载单元,用于利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表;
导出单元,用于响应于所述报表的导出指令,导出所述报表。
可选地,所述装置还包括:
状态设置模块,用于将所述报表下载队列在状态表中的下载状态设置为等待执行;
所述下载单元包括:
访问子单元,用于访问所述状态表,判断是否存在等待执行的所述报表下载队列;
判断子单元,用于若存在等待执行的所述报表下载队列,则判断是否存在所述报表下载队列对应的SQL文件;
下载子单元,用于若存在所述报表下载队列对应的SQL文件,则执行所述SQL文件,生成所述报表下载队列对应的报表的数据文件。
可选地,所述下载单元还包括:
循环子单元,用于若不存在等待执行的所述报表下载队列,则每隔预定时长,访问所述状态表,判断是否存在等待执行的所述报表下载队列。
可选地,所述导出模块还包括:
切割单元,用于对所述数据文件进行切割。
可选地,所述导出模块还包括:
转换单元,用于将所述数据文件的编码格式转换为GBK。
可选地,所述导出模块还包括:
压缩单元,用于对所述数据文件进行压缩打包。
可选地,所述导出单元包括:
获取子单元,用于获取所述数据文件的下载路径;
导出子单元,用于响应于所述报表的导出指令,根据所述数据文件的下载路径,将所述数据文件下载至终端设备。
可选地,所述脚本是shell脚本。
第三方面,本申请提供了一种报表导出的电子设备,包括处理器和存储器,所述存储器用于存储所述处理器的可执行指令,所述处理器被配置为经由执行所述可执行指令来执行上述报表导出方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现上述报表导出方法的步骤。
与现有技术相比,本申请的技术效果包括:
本申请公开了报表导出方法及装置、电子设备、计算机可读存储介质,通过并行执行多个脚本,访问数据库并对数据表进行下载导出,因此支持同时下载多个报表,能够有效利用服务器资源,减少对应用系统的资源占用,从而降低服务器压力,提高报表数据的导出效率;能够根据数据库、服务器性能,方便地设置导出报表数据时的并行度,通过合理控制脚本执行的并行度,一方面充分发挥并行执行脚本所带来的效率优势,另一方面避免系统过度繁忙导致报表导出效率受到影响。
附图说明
下面结合附图和实施例对本申请进一步说明。
图1是第一实施例提供的报表导出方法的一种流程图;
图2是第二实施例提供的报表导出方法的一种流程示意图;
图3是第二实施例提供的报表导出方法的一种流程图;
图4是对数据库中的批量报表进行下载导出的一种流程图;
图5是图4中步骤S1021的一种流程图;
图6是图4中步骤S1021的另一种流程图;
图7是图4中步骤S1022的一种流程图;
图8是对数据库中的批量报表进行下载导出的另一种流程图;
图9是对数据库中的批量报表进行下载导出的又一种流程图;
图10是对数据库中的批量报表进行下载导出的又一种流程图;
图11是第三实施例提供的报表导出装置的一种结构框图;
图12是图11中导出模块102的一种结构框图;
图13是图12中下载单元1021的一种结构框图;
图14是图12中导出单元1022的一种结构框图;
图15是第四实施例提供的报表导出的电子设备的一种结构框图;
图16是第五实施例提供的用于实现报表导出方法的程序产品的一种结构示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本申请做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
参见图1,第一实施例提供了一种报表导出方法,所述方法包括步骤S101~S102。
步骤S101:设置脚本执行的并行度。具体地,所述脚本可以是shell脚本。采用shell脚本,用户交互体验好,执行指令的速度快,并行执行时效率高,占用服务器资源少,并且允许用户自主设置并行度。该步骤允许管理人员自主设置脚本执行的并行度,管理人员能够根据数据库、服务器性能,方便地设置导出报表数据时的并行度,通过合理控制脚本执行的并行度,一方面充分发挥并行执行脚本所带来的效率优势,另一方面避免系统过度繁忙导致报表导出效率受到影响。
步骤S102:并行执行多个脚本,对数据库中的批量报表进行下载导出。
通过并行执行多个脚本,访问数据库并对数据表进行下载导出,因此支持同时下载多个报表,能够有效利用服务器资源,减少对应用系统的资源占用,从而降低服务器压力,提高报表数据的导出效率。相比于java系统执行报表下载任务的情况,大大降低了java内存的使用和服务器的压力,降低了java内存使用所带来的风险。
参见图2和图3,第二实施例提供了一种报表导出方法,在第一实施例的基础上,所述方法还可以包括步骤S103:响应于报表的下载指令,生成所述报表对应的报表下载队列以及所述报表下载队列对应的SQL文件。当用户对一个或多个报表发出下载指令时,为每个报表生成一个报表下载队列,并为每个报表下载队列生成对应的SQL文件,利用SQL文件下载对应的报表,由此每个报表下载任务对应一个队列,并行执行多个脚本,每个脚本消耗一个队列,即可同时执行多个队列的下载任务。步骤S103的执行主体可以是应用系统,应用系统例如是java系统,shell脚本执行后续步骤S101~S102。
具体地,所述报表下载队列在所述状态表中的下载状态被设置为等待执行,并且所述报表下载队列对应的下载状态在状态表中实时更新,由此通过状态表来实时记录每个报表下载队列的下载状态。报表下载队列对应的下载状态例如是等待执行、执行中、成功、失败。java系统会在后端数据库中生成对应报表下载的报表下载队列和报表下载队列对应的sql文件,所生成的报表下载队列与sql文件都是唯一的,报表下载队列匹配着业务人员等待下载的报表,此时状态表中报表下载队列对应的下载状态是等待执行。业务人员可以通过前端系统查看java生成的状态表,从中查看当前报表的下载状态。状态表中可以包含报表名称、报表下载用户id、报表下载时间、队列标识、报表下载状态等信息。进一步优选地,可以通过设置权限的方式,使得每个用户只能查看自己下载的报表。
具体地,参见图4,所述对数据库中的批量报表进行下载导出,可以包括步骤S1021~S1022。
步骤S1021:利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表。
进一步具体地,参见图5,所述步骤S1021可以包括步骤S1021a~S1021c。
步骤S1021a:访问所述状态表,判断是否存在等待执行的所述报表下载队列。该步骤检验状态表中报表下载队列的下载状态,判断当前是否存在等待执行的报表下载队列。具体地,可以使用相关数据库命令来实现步骤S1021a,数据库命令例如是mysql-h。
步骤S1021b:若存在等待执行的所述报表下载队列,则判断是否存在所述报表下载队列对应的SQL文件。该步骤检验等待执行的报表下载队列是否存在对应的SQL文件。
进一步具体地,参见图6,所述步骤S1021还可以包括步骤S1021d:若不存在等待执行的所述报表下载队列,则每隔预定时长,访问所述状态表,判断是否存在等待执行的所述报表下载队列。查看状态表,如果当前状态表中不存在等待执行的报表下载队列,则按照预定时间间隔,重复访问状态表,由此能够及时发现当前是否存在等待执行的报表下载队列,加快报表下载任务的处理效率。预定时长是预先设定的时长,例如是10秒钟或者1分钟。
步骤S1021c:若存在所述报表下载队列对应的SQL文件,则执行所述SQL文件,生成所述报表下载队列对应的报表的数据文件。该步骤还可以包括:若存在所述报表下载队列对应的SQL文件,则将报表下载队列在状态表中的下载状态更改为执行中。该步骤对应报表下载队列对应的SQL文件存在的情况,将继续下载报表。通过SQL文件的检验步骤,能够及时发现SQL生成异常的问题,后续可以由开发人员排查异常,检验什么原因造成报表下载队列时文件未生成的情况。进一步地,该步骤还可以包括:若不存在所述报表下载队列对应的SQL文件,则将所述报表下载队列在所述状态表中对应的下载状态修改为失败。
进一步优选地,步骤S1021c后,所述步骤S1021还可以包括:判断所述数据文件是否生成成功;若所述数据文件生成失败,则将所述报表下载队列在所述状态表中对应的下载状态修改为失败。
步骤S1022:响应于所述报表的导出指令,导出所述报表。具体地,可以使用数据库下载工具下载导出报表的数据文件,数据库下载工具例如是mysqluldr。
参见图7,所述步骤S1022可以包括步骤S1022a~S1022b。
步骤S1022a:获取所述数据文件的下载路径。
步骤S1022b:响应于所述报表的导出指令,根据所述数据文件的下载路径,将所述数据文件下载至终端设备。
通过获取数据文件在服务器的下载路径,将数据文件下载至本地。
参见图8,所述对数据库中的批量报表进行下载导出,还可以包括步骤S1023:对所述数据文件进行切割。有些报表下载的数据会达到百万级的数据量,用户的终端设备可能会打不开数据文件,甚至可能出现终端设备卡死的情况,因此当数据量较大时,可以根据实际情况对数据文件进行切割,减小每个数据文件的数据量,避免出现用户打不开数据文件或者终端设备卡死的情况。例如当报表下载的数据超过80W条时,可以根据实际应用中的需求将数据文件切割为2条、4条、5条、8条。
参见图9,所述对数据库中的批量报表进行下载导出,还可以包括步骤S1024:将所述数据文件的编码格式转换为GBK。用户的终端设备所采用的编码格式可能与数据库常用的编码格式不同,用户终端设备的编码格式例如是GBK格式,数据库常用的编码格式例如是utf8格式,将数据文件的编码格式转换为用户的终端设备所采用的编码格式,避免用户打开数据文件时出现乱码的情况。该步骤还可以包括:若对所述数据文件进行编码格式转换失败,则将所述报表下载队列在所述状态表中对应的下载状态修改为失败。
进一步优选地,可以使用linux命令为编码格式为GBK的数据文件添加中文表头,方便用户清楚了解数据含义。
参见图10,所述对数据库中的批量报表进行下载导出,还可以包括步骤S1025:对所述数据文件进行压缩打包。由此,减小数据文件的大小,减少下载导出数据文件所需要的时长,提高用户下载导出数据文件的效率。具体地,可以对数据文件进行打包压缩,并对打包压缩后的数据文件进行命名,命名方式例如是:报表名_用户id_报表下载时间.zip,将压缩包移动至后端服务器上的下载文件路径的文件夹下。该步骤还可以包括:将所述报表下载队列在所述状态表中对应的下载状态更改为成功,并在状态表中插入报表下载队列对应的下载文件路径路径地址。完成下载后用户可以在报表系统中点击对应的导出按钮导出报表,可以看到报表名_用户id_报表下载时间.zip名称的压缩包,解压压缩包后可以看到excel格式的数据报表。该步骤还可以包括:若对所述数据文件进行压缩打包失败,则将所述报表下载队列在所述状态表中对应的下载状态修改为失败。在压缩数据文件和导出数据文件的过程中,均可采用并行执行多个脚本的方式,有效利用服务器资源,提高文件压缩和下载的效率。
下列步骤R1~R9示出了第二实施例的一种应用场景。
R1:用户点击A报表导出功能,系统从后端数据库获取到报表下载a队列以及a队列对应的a.sql文件,将a队列在状态表中对应的下载状态设置为等待执行;
R2:校验报表系统是否生成a队列对应的a.sql文件;如果文件不存在则更改a队列在状态表中对应的下载状态为失败;
R3:如果a.sql文件存在,则更改a队列在状态表中对应的下载状态为正在执行;
R4:使用数据下载工具执行a.sql文件,下载导出A报表的数据文件,并对数据文件进行切割;如果A报表的数据文件导出失败,则更改a队列在状态表中对应的下载状态为失败;
R5:如果A报表的数据文件导出成功,对数据文件进行编码格式转换,将其编码格式转换为GBK格式文件;如果A报表的数据文件格式转换失败,则更改a队列在状态表中对应的下载状态为失败;
R6:对导出的数据文件进行添加表头信息,表头信息为数据对应的业务含义;
R7:对数据文件进行打包压缩,压缩包命名为A.ZIP;如果压缩失败则更改a队列在状态表中对应的下载状态为失败;
R8:如果压缩成功,则将A.ZIP文件移动至/d/unload/路径下,更改a队列在状态表中对应的下载状态为成功,并在状态表中插入A.ZIP的地址路径/d/unload/A.ZIP;
R9:用户点击A报表下载,解压A.ZIP文件则可查看EXCEL的数据文件。
参见图11,第三实施例提供了一种报表导出装置,所述装置包括并行设置模块101、导出模块102,并行设置模块101与导出模块102进行数据交互。
并行设置模块101用于设置脚本执行的并行度。所述并行设置模块101能够控制脚本执行的并行度,还可以控制各个功能模块的执行顺序。具体地,所述脚本可以是shell脚本。
导出模块102用于并行执行多个脚本,对数据库中的批量报表进行下载导出。
继续参见图11,所述装置还可以包括队列生成模块103,用于响应于报表的下载指令,生成所述报表对应的报表下载队列以及所述报表下载队列对应的SQL文件。队列生成模块103与导出模块102进行数据交互。
参见图12,所述导出模块102可以包括下载单元1021、导出单元1022,下载单元1021与导出单元1022进行数据交互。下载单元1021用于利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表。导出单元1022用于响应于所述报表的导出指令,导出所述报表。
继续参见图11,所述装置还可以包括状态设置模块104,用于将所述报表下载队列在状态表中的下载状态设置为等待执行。所述状态设置模块104用于更改所述状态表中所述报表下载队列对应的下载状态。状态设置模块104与导出模块102进行数据交互。
参见图13,所述下载单元1021可以包括访问子单元1021a、判断子单元1021b、下载子单元1021c,访问子单元1021a与判断子单元1021b进行数据交互,判断子单元1021b与下载子单元1021c进行数据交互。访问子单元1021a用于访问所述状态表,判断是否存在等待执行的所述报表下载队列。判断子单元1021b用于若存在等待执行的所述报表下载队列,则判断是否存在所述报表下载队列对应的SQL文件。下载子单元1021c用于若存在所述报表下载队列对应的SQL文件,则执行所述SQL文件,生成所述报表下载队列对应的报表的数据文件。
继续参见图13,所述下载单元1021还可以包括循环子单元1021d,用于若不存在等待执行的所述报表下载队列,则每隔预定时长,访问所述状态表,判断是否存在等待执行的所述报表下载队列。循环子单元1021d与访问子单元1021a进行数据交互。
继续参见图12,所述导出模块102还可以包括切割单元1023,用于对所述数据文件进行切割。切割单元1023可以与下载单元1021进行数据交互。
继续参见图12,所述导出模块102还可以包括转换单元1024,用于将所述数据文件的编码格式转换为GBK。转换单元1024可以与切割单元1023进行数据交互。
继续参见图12,所述导出模块102还可以包括压缩单元1025,用于对所述数据文件进行压缩打包。压缩单元1025可以与转换单元1024、导出单元1022进行数据交互。
参见图14,所述导出单元1022可以包括获取子单元1022a、导出子单元1022b,获取子单元1022a与导出子单元1022b进行数据交互。获取子单元1022a用于获取所述数据文件的下载路径。导出子单元1022b用于响应于所述报表的导出指令,根据所述数据文件的下载路径,将所述数据文件下载至终端设备。
继续参见图11,所述装置还可以包括数据库信息模块105,用于维护数据库信息,数据库信息可以包括数据库账户名、IP地址、密码信息。数据库信息模块105与导出模块102进行数据交互。
参见图15,第四实施例提供了一种报表导出的电子设备3,电子设备3包括至少一个存储单元31、至少一个处理单元32以及连接不同平台系统的总线33。
存储单元31可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)311和/或高速缓存存储单元312,还可以进一步包括只读存储单元(ROM)313。
其中,存储单元31还存储有程序产品4,程序产品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的其它模块通信。应当明白,尽管图15中未示出,可以结合电子设备3使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
参见图16,第五实施例提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现第一实施例中报表导出方法的步骤(如图1所示)。图16示出了本实施例提供的用于实现上述方法的程序产品4,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品4不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品4可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本申请从使用目的上,效能上,进步及新颖性等观点进行阐述,其设置有的实用进步性,已符合专利法所强调的功能增进及使用要件,本申请以上的说明及附图,仅为本申请的较佳实施例而已,并非以此局限本申请,因此,凡一切与本申请构造,装置,特征等近似、雷同的,即凡依本申请专利申请范围所作的等同替换或修饰等,皆应属本申请的专利申请保护的范围之内。
Claims (4)
1.一种报表导出方法,其特征在于,所述方法包括:
设置脚本执行的并行度;
并行执行多个脚本,对数据库中的批量报表进行下载导出;
响应于报表的下载指令,生成所述报表对应的报表下载队列以及所述报表下载队列对应的SQL文件;
所述对数据库中的批量报表进行下载导出,包括:
利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表;
响应于所述报表的导出指令,导出所述报表;
将所述报表下载队列在状态表中的下载状态设置为等待执行;所述状态表是基于java生成的;所述状态表包含报表名称、报表下载用户id、报表下载时间、队列标识和报表下载状态信息;
所述利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表,包括:
访问所述状态表,判断是否存在等待执行的所述报表下载队列;
若存在等待执行的所述报表下载队列,则判断是否存在所述报表下载队列对应的SQL文件,以便对文件未生成的情况进行排查;
若存在所述报表下载队列对应的SQL文件,则执行所述SQL文件,生成所述报表下载队列对应的报表的数据文件;
若不存在等待执行的所述报表下载队列,则每隔预定时长,访问所述状态表,判断是否存在等待执行的所述报表下载队列;
所述对数据库中的批量报表进行下载导出,还包括:
对所述数据文件进行切割;
将所述数据文件的编码格式转换为GBK;
对所述数据文件进行压缩打包;
所述将所述数据文件的编码格式转换为GBK,包括:
使用linux命令为编码格式为GBK的数据文件添加中文表头;
若对所述数据文件进行编码格式转换失败,则将所述报表下载队列在所述状态表中对应的下载状态修改为失败。
2.根据权利要求1所述的报表导出方法,其特征在于,所述响应于所述报表的导出指令,导出所述报表,包括:
获取所述数据文件的下载路径;
响应于所述报表的导出指令,根据所述数据文件的下载路径,将所述数据文件下载至终端设备。
3.根据权利要求1所述的报表导出方法,其特征在于,所述脚本是shell脚本。
4.一种报表导出装置,其特征在于,所述装置包括:
并行设置模块,用于设置脚本执行的并行度;
导出模块,用于并行执行多个脚本,对数据库中的批量报表进行下载导出;
队列生成模块,用于响应于报表的下载指令,生成所述报表对应的报表下载队列以及所述报表下载队列对应的SQL文件;
所述导出模块包括:
下载单元,用于利用所述报表下载队列对应的SQL文件,下载所述报表下载队列对应的报表;
导出单元,用于响应于所述报表的导出指令,导出所述报表;
状态设置模块,用于将所述报表下载队列在状态表中的下载状态设置为等待执行;所述状态表包含报表名称、报表下载用户id、报表下载时间、队列标识和报表下载状态信息;
所述下载单元包括:
访问子单元,用于访问所述状态表,判断是否存在等待执行的所述报表下载队列;
判断子单元,用于若存在等待执行的所述报表下载队列,则判断是否存在所述报表下载队列对应的SQL文件,以便后续对造成报表下载队列时文件未生成的情况进行排查;
下载子单元,用于若存在所述报表下载队列对应的SQL文件,则执行所述SQL文件,生成所述报表下载队列对应的报表的数据文件;
循环子单元,用于若不存在等待执行的所述报表下载队列,则每隔预定时长,访问所述状态表,判断是否存在等待执行的所述报表下载队列;
所述导出模块还包括:
切割单元,用于对所述数据文件进行切割;
转换单元,用于将所述数据文件的编码格式转换为GBK;所述将所述数据文件的编码格式转换为GBK,包括:使用linux命令为编码格式为GBK的数据文件添加中文表头;若对所述数据文件进行编码格式转换失败,则将所述报表下载队列在所述状态表中对应的下载状态修改为失败;
压缩单元,用于对所述数据文件进行压缩打包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010526882.0A CN111611307B (zh) | 2020-06-11 | 2020-06-11 | 报表导出方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010526882.0A CN111611307B (zh) | 2020-06-11 | 2020-06-11 | 报表导出方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111611307A CN111611307A (zh) | 2020-09-01 |
CN111611307B true CN111611307B (zh) | 2023-12-15 |
Family
ID=72203481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010526882.0A Active CN111611307B (zh) | 2020-06-11 | 2020-06-11 | 报表导出方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611307B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896214B (zh) * | 2022-04-18 | 2024-06-21 | 宝信软件(武汉)有限公司 | 一种主机平台多数据集批量传输方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323945A (zh) * | 2011-09-02 | 2012-01-18 | 南京中兴力维软件有限公司 | 一种基于sql的数据库管理方法和装置 |
CN107315763A (zh) * | 2017-04-26 | 2017-11-03 | 杭州沃趣科技股份有限公司 | 一种针对Oracle数据库跨平台数据迁移方法 |
CN108804712A (zh) * | 2018-06-27 | 2018-11-13 | 中国建设银行股份有限公司 | 数据导出方法及装置 |
CN110336871A (zh) * | 2019-07-01 | 2019-10-15 | 江苏满运软件科技有限公司 | 一种文件处理方法、装置、存储介质及电子设备 |
CN110489468A (zh) * | 2019-07-09 | 2019-11-22 | 威富通科技有限公司 | 一种数据报表的导出方法、装置及服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9633055B2 (en) * | 2014-05-15 | 2017-04-25 | Microsoft Technology Licensing, Llc | Database migration |
-
2020
- 2020-06-11 CN CN202010526882.0A patent/CN111611307B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323945A (zh) * | 2011-09-02 | 2012-01-18 | 南京中兴力维软件有限公司 | 一种基于sql的数据库管理方法和装置 |
CN107315763A (zh) * | 2017-04-26 | 2017-11-03 | 杭州沃趣科技股份有限公司 | 一种针对Oracle数据库跨平台数据迁移方法 |
CN108804712A (zh) * | 2018-06-27 | 2018-11-13 | 中国建设银行股份有限公司 | 数据导出方法及装置 |
CN110336871A (zh) * | 2019-07-01 | 2019-10-15 | 江苏满运软件科技有限公司 | 一种文件处理方法、装置、存储介质及电子设备 |
CN110489468A (zh) * | 2019-07-09 | 2019-11-22 | 威富通科技有限公司 | 一种数据报表的导出方法、装置及服务器 |
Non-Patent Citations (1)
Title |
---|
闪四清.《SQL Server 7.0系统管理和应用开发指南》.清华大学出版社,2000,第754-755页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111611307A (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162345B (zh) | 一种应用程序访问方法、装置和存储介质 | |
KR102674648B1 (ko) | 문서 분석 방법, 장치, 기기 및 저장 매체 | |
CN105786998B (zh) | 数据库中间件系统及利用其处理数据的方法 | |
CN114253740A (zh) | 基于Linux内核的协议栈数据传输方法及装置 | |
CN101123616A (zh) | 一种服务器管理的方法及一种服务器管理系统 | |
CN113032099B (zh) | 云计算节点、文件管理方法及装置 | |
CN113971110A (zh) | 接口测试方法、装置、设备与计算机可读存储介质 | |
CN112395107A (zh) | 税控设备控制的方法、装置、存储介质及电子设备 | |
CN102255866A (zh) | 一种数据下载方法及装置 | |
CN115686540A (zh) | 基于鸿蒙系统的rpa控制方法及系统 | |
CN111782319A (zh) | 在云桌面挂载USBKey实现共享访问的系统及方法 | |
CN111611307B (zh) | 报表导出方法及装置 | |
CN113660307B (zh) | 一种算法综合集成服务系统 | |
CN116755844A (zh) | 一种仿真引擎的数据处理方法、装置、设备及存储介质 | |
CN111694620A (zh) | 第三方业务的交互方法、装置、设备及计算机存储介质 | |
CN115329170A (zh) | 网页抓取方法、装置、设备以及存储介质 | |
CN111767126A (zh) | 分布式批量处理的系统和方法 | |
CN109597952B (zh) | 网页信息处理方法、系统、电子设备和存储介质 | |
CN114610446B (zh) | 一种自动注入探针的方法、装置及系统 | |
US20110191405A1 (en) | Automatic Client-Server Code Generator | |
CN112416509B (zh) | 虚拟机控制系统及相关设备 | |
CN111937366B (zh) | Web请求处理方法和装置 | |
CN114696888A (zh) | 卫星测运控系统的端口任务处理方法、装置、设备及介质 | |
CN114816672A (zh) | 虚拟机的创建方法、装置、电子设备和存储介质 | |
CN112231409A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |