发明内容
本发明的目的在于提供一种数据查询和报表导出的方法及系统,能更好的解决大数据查询和报表导出速度缓慢的技术问题。
根据本发明的一个方面,本发明提供的一种数据查询和报表导出的方法包括:
A)客户端经由互联网将用户在数据查询页面输入的数据查询请求发送至Web服务器;
B)Web服务器收到所述数据查询请求后,提取其中的查询条件信息、分组方式信息、排序方式信息,并生成查询统计命令;
C)数据库服务器根据所述查询统计命令,查询数据库,并生成报表文件;
D)数据库服务器将所述报表文件复制到Web服务器,以供客户端下载。
进一步地,所述步骤B)包括:
所述Web服务器从所述数据查询请求中提取报表名和输出文件路径。
进一步地,所述步骤B)还包括:
Web服务器将所述查询统计命令作为数据库服务器的存储过程的参数,发送至所述数据库服务器的存储过程。
进一步地,当所述查询统计命令的字节数大于预定字节时,Web服务器将所述查询统计命令截断为几个不大于预定字节的参数后,发送至数据库服务器并进行重新组合。
进一步地,所述步骤C)包括:
调用数据库服务器的存储过程,执行所述查询统计命令;
查询数据库,并将查询结果写入其生成的Excel表格中,形成报表文件。
进一步地,所述步骤D)还包括:
数据库服务器生成导出文件信息表,并将包含所述报表文件的报表名、文件生成日期和文件大小的文件信息保存至所述导出文件信息表中。
根据本发明的另一方面,本发明提供的一种数据查询和报表导出的系统包括:
客户端,用于经由互联网将用户在数据查询页面输入的数据查询请求发送至Web服务器;
Web服务器,用于在收到所述数据查询请求后,提取其中的查询条件信息、分组方式信息、排序方式信息,并生成查询统计命令;
数据库服务器,用于根据所述查询统计命令,查询数据库,生成报表文件,并将所述报表文件复制到Web服务器,以供客户端下载。
进一步地,所述Web服务器还用于从所述数据查询请求中提取报表名和输出文件路径。
进一步地,所述Web服务器还用于在所述查询统计命令的字节数大于预定字节时,将所述查询统计命令截断为几个不大于预定字节的参数后,发送至数据库服务器并进行重新组合。
进一步地,所述数据库服务器还用于生成导出文件信息表,并将包含所述报表文件的报表名、文件生成日期和文件大小的文件信息保存至所述导出文件信息表中。
与现有技术相比较,本发明的有益效果在于:
本发明能够节省系统资源,提高工作效率,为数据使用者节省宝贵的时间,为企业带来更高的效益。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图2显示了本发明提供的一种数据查询和报表文件导出的方法原理图,如图2所示,步骤包括:
步骤201:客户端经由互联网将用户在数据查询页面输入的数据查询请求发送至Web服务器。
步骤202:Web服务器收到所述数据查询请求后,提取其中的查询条件信息、分组方式信息、排序方式信息,并生成查询统计命令。
所述步骤202包括:所述Web服务器从所述数据查询请求中提取报表名和输出文件路径。
所述步骤202还包括:Web服务器将所述查询统计命令作为数据库服务器的存储过程的参数,发送至所述数据库服务器的存储过程。
进一步地,当所述查询统计命令的字节数大于预定字节时,Web服务器将所述查询统计命令截断为几个不大于预定字节的参数后,发送至数据库服务器并进行重新组合。
步骤203:数据库服务器根据所述查询统计命令,查询数据库,并生成报表文件。
所述步骤203包括:调用数据库服务器的存储过程,执行所述查询统计命令;查询数据库,并将查询结果写入其生成的Excel表格中,形成报表文件。
步骤204:数据库服务器将所述报表文件复制到Web服务器,以供客户端下载。
所述步骤204还包括:数据库服务器生成导出文件信息表,并将包含所述报表文件的报表名、文件生成日期和文件大小的文件信息保存至所述导出文件信息表中。
图3显示了本发明提供的客户端从服务器端读取数据的工作框图,如图3所示。在前台的客户端经由互联网将用户在数据查询页面(以图4为例)输入的数据查询请求发送至服务器端后,客户端可以去做其他工作,后台的服务器端根据客户端的所述数据查询请求完成数据查询和导出任务,并将导出的数据保存至报表存储区。导出完毕后,提示客户端查询任务已完成,客户端就可以在方便的时候查看所述导出的文档。也就是说,本发明采用异步方式进行数据的查询和导出,客户端发送数据查询请求后,服务器端在执行所述数据查询请求的同时,客户端可以进行其它工作,而不必等待服务器端完成查询任务,从而大大节省了用户的时间。
图5显示了本发明实施例提供的数据查询和报表文件导出流程框图,如图5所示,以查询并导出库存汇总报表为例进行说明。
第一步、用户通过客户端的数据查询页面输入数据查询请求,并经由互联网发送到Web服务器上。
例如,用户通过如图6所示的数据查询页面输入数据查询请求,其中,查询在库数量范围1000~2000,数据导出时按型号分组、按倒序排列等等。
第二步、Web服务器根据所述数据查询请求,提取其中的查询条件信息、分组方式信息、排序方式信息,并生成查询统计命令。具体地说,Web服务器接收所述数据查询请求后,解析所述数据查询请求,并从中提取查询条件信息、分组方式信息、排序方式信息等信息。进行信息提取后,将提取的信息插入到数据查询表达式中,从而形成查询统计命令。以第一步所述数据查询请求为例,将提取的信息插入到数据查询表达式后,得到的查询统计命令如下:
pro_stockcompute′and(isnull(t1.sl3,0)+isnull(t2.innumber,0))>=1000
and(isnull(t1.sl3,0)+isnull(t2.innumber,0))<=2000--查询条件
group by a.pn--分组方式
order by a.pn DESC′--排序方式
所述数据查询表达式是SQL(Structured Query Language,结构化查询语言)表达式。
所述Web服务器可以是使用IIS(Internet Information Services,Internet信息服务)软件的服务器,用于监听用户请求,并为用户返回结果。
第三步、Web服务器将所述查询统计命令作为数据库服务器的存储过程的参数,发送至所述数据库服务器的存储过程。进一步地,当所述查询统计命令的字节数大于预定字节时,Web服务器将所述查询统计命令截断为几个不大于预定字节的参数,并发送至数据库服务器进行重新组合。
例如,当所述查询统计命令的字节数大于8000字节时,Web服务器将所述查询统计命令进行截断处理,得到几个不大于8000字节的参数,本例中,将所述查询统计命令进行每4000字节截断一次的截断处理,得到的多个参数如下:
strSQL1=strSQL.Substring(0,4000);
strSQL2=strSQL.Substring(4000,4000);
strSQL3=strSQL.Substring(8000,strSQL.Length-8000);
截断为多个参数后,将所述参数传入数据库服务器的存储过程,在存储过程中重新组合成查询统计命令,即:
string strSQL=strSQL1+strSQL2+strSQL3;
所述存储过程是CLR存储过程,所述CLR存储过程可以返回包括输出参数、表格结果和消息。
第四步、数据库服务器根据所述查询统计命令,查询数据库,并生成报表文件。具体地说,首先调用数据库的存储过程,执行所述查询统计命令,即查询数据库,并得到结果集。然后在数据库服务器中创建Excel表格,设置Excel表格格式,并根据查询的结果集,填充所述Excel表格,从而形成报表文件。
例如,将所述查询统计命令、报表名、输出文件路径作为参数带入数据库服务器CLR存储过程“SP_saveexcel”,执行所述查询统计命令的过程如下:
第五步、数据库服务器将形成的报表文件复制到Web服务器,并释放本地资源。也就是说,所述报表文件从数据库服务器拷贝到Web服务器的预设路径(输出文件路径)后,为了节省数据库服务器的空间,删除数据库服务器上生成的所述报表文件。
第六步、数据库服务器生成导出文件信息表,并将包含所述报表文件的报表名、文件生成日期和文件大小的文件信息保存至所述导出文件信息表中。客户端显示的导出文件信息表如图7所示。
第七步、客户端可以随时通过其浏览器查看所述导出文件信息表,并下载显示的报表文件。客户端显示的报表文件如图8所示。
图9显示了本发明提供的一种数据查询和报表导出的系统框图,如图9所示,包括:
客户端,用于经由互联网将用户在数据查询页面输入的数据查询请求发送至Web服务器;
Web服务器,用于在收到所述数据查询请求后,提取其中的查询条件信息、分组方式信息、排序方式信息,并生成查询统计命令;
数据库服务器,用于根据所述查询统计命令,查询数据库,生成报表文件,并将所述报表文件复制到Web服务器,以供客户端下载。
所述Web服务器所述Web服务器还用于从所述数据查询请求中提取报表名和输出文件路径。
所述Web服务器还用于在所述查询统计命令的字节数大于预定字节时,将所述查询统计命令截断为几个不大于预定字节的参数后,发送至数据库服务器并进行重新组合。
所述数据库服务器还用于生成导出文件信息表,并将包含所述报表文件的报表名、文件生成日期和文件大小的文件信息保存至所述导出文件信息表中。
所述系统的工作流程如下:
第一步、客户端将用户在数据查询页面输入的数据查询请求发送至Web服务器。
第二步、Web服务器根据客户端录入数据查询请求,提取查询条件信息、分组方式信息、排序方式信息和报表名、输出文件路径等信息,并根据提取的信息生成查询统计命令。
所述报表名是用户为将要导出的报表文件自定义的文件名。
第三步、调用存储过程,执行所述查询统计命令,得到查询的结果集,并生成报表文件。
第四步、数据库服务器将所述报表文件发送到Web服务器,并释放本地数据服务端资源。
第五步、客户端随时到Web服务器下载报表。
综上所述,本发明具有以下技术效果:
1、用户通过数据查询页面输入数据查询请求,能够更加满足用户查询需要,使用户查询数据更方便;
2、导出报表文件的大小不限,且报表文件在后台服务器端生成,不占用前台客户端的内存资源,即节省了客户端的内存资源;
3、将数据库服务器的报表文件完全备份至Web服务器,减少了数据冗余,使报表文件导出速度更快,为用户节省了宝贵时间,既提高了工作效率,又为企业带来更高的效益。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。