网管服务器及其将查询结果导出成Excel文件的方法技术

技术编号:7954517 阅读:167 留言:0更新日期:2012-11-08 23:38
本发明专利技术涉及一种网管服务器及其将查询结果导出成Excel文件的方法,上述方法为:网管服务器收到查询结果导出到Excel请求时,创建查询语句,根据上述查询语句,获取查询结果的标题头信息,生成标题头表,再根据上述查询语句,生成查询视图,然后根据上述标题头表及上述查询视图,生成BCP命令,将查询结果写入Excel文件中。本发明专利技术使得在导出同样数据量的查询结果数据时所消耗的时间减少,且占用系统资源降低。

【技术实现步骤摘要】
网管服务器及其将查询结果导出成Excel文件的方法
本专利技术涉及网络性能管理领域,尤其涉及一种网管服务器及其将查询结果导出成Excel文件的方法。
技术介绍
在移动通信系统中,设备的性能数据是通过对基站上报的数据进行取样、计算、分析得到的一种量化管理数据,是反映整个设备运行状态的最直观体现,对于大规模商用网络的网络规划、优化等起着重要的作用。目前的网管系统的性能管理提供了性能数据查询以及导出功能,运营商或网优工作人员可以根据需要将系统运行数据按照设备、时间查询并导出数据到Excel进行汇总分析并存档,以掌握本地网络的整体情况,以指导定位问题或进行网络优化。现有的网管服务器将设备性能数据的查询结果导出到Excel文件的方法主要包括以下步骤:1、查询网管性能数据库,获取性能数据查询结果集;2、将查询结果集加载入内存;3、循环调用ApacheExcelAPIPOI,将查询结果写入到Excel文件中。从步骤1和步骤2可以看出,这两步占用了数据库资源和内存资源;步骤3中使用POI的方式,将查询结果写入Excel文件,这种方式首先根据查询结果生成XML(ExtensibleMarkupLanguage,可扩展标记语言)文件并将其载入内存,然后再写入Excel。在实际应用中,要导出的查询结果数据量通常会比较大,往往达到10万级以上,使用上述方法对查询结果进行Excel导出操作,占用的系统内存资源比较大,而且耗时较长,并且随着数据量的增大占用的系统内存以及所耗时间增幅较大;因查询结果导出到Excel文件中的操作使用是比较频繁的,如果短期内频繁的执行该操作的话,网管服务器会采用多个线程并发处理,这样每个导出所需要的时间就被拉长了,在这段时间内的每个线程申请的内存空间都在使用状态,前一次的大数据量导出还没有完成,后一次导出操作又开始执行,最终会导致网管服务器内存耗尽。同时查询结果数据导出到Excel文件的频繁执行,会导致内存在短时间内被填满,使得其他线程申请不到内存,会导致服务的异常。
技术实现思路
本专利技术的目的在于,提供一种网管服务器机器将查询结果导出成Excel文件的方法,以优化现有技术在导出查询结果数据时消耗时间长、占用系统资源多的问题。本专利技术提供了一种网管服务器将查询结果导出成Excel文件的方法,包括以下步骤:网管服务器收到查询结果导出到Excel请求时,创建查询语句;根据上述查询语句,获取查询结果的标题头信息,生成标题头表;根据上述查询语句,生成查询视图;根据上述标题头表及上述查询视图,生成BCP命令,将查询结果写入Excel文件中。优选地,上述根据查询语句,生成查询视图步骤具体包括以下步骤:根据上述查询语句,生成临时视图;遍历上述临时视图,将查询结果字段的数据类型转换成字符类型,得到查询视图。优选地,上述方法通过convert语句将上述查询结果字段的数据类型转换成字符类型。优选地,上述根据标题头表及查询视图,生成BCP命令步骤具体为:将上述标题头表的select语句与上述查询视图的select语句通过unionall合并,生成BCP命令。本专利技术进一步提供了一种网管服务器,包括查询语句创建模块、标题头表生成模块、查询视图生成模块、以及BCP命令生成模块,上述查询语句创建模块,用于根据收到的查询结果导出到Excel请求,创建查询语句;上述标题头表生成模块,用于根据上述查询语句创建模块创建的查询语句,获取查询结果的标题头信息,生成标题头表;上述查询视图生成模块,用于根据上述查询语句创建模块创建的查询语句,生成查询视图;上述BCP命令生成模块,用于根据上述标题头表生成模块生成的标题头表及上述查询视图生成模块生成的查询视图,生成BCP命令,并将查询结果写入Excel文件中。优选地,上述查询视图生成模块,还用于生成临时视图,并通过convert语句遍历上述临时视图,将上述临时视图的查询结果字段的数据类型转换成字符类型;上述BCP命令生成模块,还用于通过unionall合并上述标题头表生成模块生成的标题头表的select语句与上述查询视图生成模块生成的查询视图的select语句。与现有技术相比,一方面,本专利技术无需查询SQLServer数据库,减少了数据库的压力,使得在导出同样数据量的查询结果数据时所消耗的时间减少,且占用系统资源降低,尤其是在数据量大时,本专利技术表现更优异;另一方面,本专利技术使用SQLServer提供的BCP命令,将查询结果导入到Excel文件,实现了标题内容和数据内容的一并导出且格式正确。本专利技术适用于移动通信系统。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本专利技术的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是本专利技术网管服务器将查询结果导出成Excel文件的方法流程图;图2是相同运行环境相同负荷下,本专利技术的方法和现有的方法导出相同数据量的查询结果数据消耗的时间对比图;图3是相同运行环境相同负荷下,本专利技术的方法和现有的方法导出相同数据量的查询结果数据占用系统内存的对比图;图4是本专利技术网关服务器的原理框图。具体实施方式为了使本专利技术所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。如图1所示,是本专利技术网管服务器将查询结果导出成Excel文件的方法流程图,包括以下步骤:步骤S001:网管服务器收到查询结果导出到Excel请求;步骤S002:根据上述请求,创建查询语句;步骤S003:根据上述查询语句,获取查询结果的标题头信息,生成标题头表;本步骤无需实际查询数据库中的性能数据,这样与数据库链接时间较短,而且省去了查询数据库大量数据所占用的系统内存资源。步骤S004:根据上述查询语句,生成临时视图,遍历上述临时视图,通过convert语句将查询结果字段的数据类型转换成字符类型,生成查询视图;因SQL(StructuredQueryLanguage,结构化查询语言)查询语句较长,其总字符长度可能会超过SQLServer数据库的BCP中的SQL语句的长度,故本步骤中的临时视图是为了使查询语句能够完整而创建的,只是一个临时的虚的视图。本步骤使得查询视图的数据类型与上述标题头表的数据类型一致。步骤S005:将上述标题头表的select语句与上述查询视图的select语句通过unionall合并,生成BCP命令,将查询结果写入Excel文件中。BCP命令是SQLServer数据库中负责导入导出数据的一个命令行工具,它能以并行的方式高效地导入导出大批量的数据,但是该命令只能导出数据,不能导出标题头,需要应用程序自己处理表头和数据的导出问题,并且导出语句存在长度以及导出数据类型不一致的问题。本专利技术通过convert语句将查询结果字段的数据类型转换成字符类型,使得查询视图的数据类型与标题头表的数据类型一致,并通过使用unionall将标题头表的select语句和查询视图的select语句合并,保证了内容导出到Excel后,标题头的内容位于查询结果数据内容的上方,处于合理的位置,即实现了标题内容和数据内容的一并导出。如图2所示,是相同运行环境相本文档来自技高网
...
网管服务器及其将查询结果导出成Excel文件的方法

【技术保护点】
一种网管服务器将查询结果导出成Excel文件的方法,其特征在于,包括以下步骤:网管服务器收到查询结果导出到Excel请求时,创建查询语句;根据所述查询语句,获取查询结果的标题头信息,生成标题头表;根据所述查询语句,生成查询视图;根据所述标题头表及所述查询视图,生成BCP命令,将查询结果写入Excel文件中。

【技术特征摘要】
1.一种网管服务器将查询结果导出成Excel文件的方法,其特征在于,包括以下步骤:网管服务器收到查询结果导出到Excel请求时,创建查询语句;根据所述查询语句,获取查询结果的标题头信息,生成标题头表;根据所述查询语句,生成查询视图;根据所述标题头表及所述查询视图,生成BCP命令,将查询结果写入Excel文件中;其中,所述根据查询语句,生成查询视图步骤具体包括以下步骤:根据所述查询语句,生成临时视图;遍历所述临时视图,将查询结果字段的数据类型转换成字符类型,得到查询视图,其中,生成的查询视图的数据类型与所述标题头表的数据类型一致。2.根据权利要求1所述的方法,其特征在于,所述方法通过convert语句将所述查询结果字段的数据类型转换成字符类型。3.根据权利要求1-2任一项所述的方法,其特征在于,所述根据标题头表及查询视图,生成BCP命令步骤具体为:将所述标题头表的select语句与所述查询视图的select语句通过unionall合并,生成BCP命令。4.一种网管服务器,其特征在于,包括查询语句创...

【专利技术属性】
技术研发人员:陈影
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1