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

文档序号:6423479阅读:210来源:国知局
专利名称:网管服务器及其将查询结果导出成Excel文件的方法
技术领域
本发明涉及网络性能管理领域,尤其涉及一种网管服务器及其将查询结果导出成Excel文件的方法。
背景技术
在移动通信系统中,设备的性能数据是通过对基站上报的数据进行取样、计算、分析得到的一种量化管理数据,是反映整个设备运行状态的最直观体现,对于大规模商用网络的网络规划、优化等起着重要的作用。目前的网管系统的性能管理提供了性能数据查询以及导出功能,运营商或网优工作人员可以根据需要将系统运行数据按照设备、时间查询并导出数据到Excel进行汇总分析并存档,以掌握本地网络的整体情况,以指导定位问题或进行网络优化。现有的网管服务器将设备性能数据的查询结果导出到Excel文件的方法主要包括以下步骤I、查询网管性能数据库,获取性能数据查询结果集;2、将查询结果集加载入内存;3、循环调用Apache Excel API POI,将查询结果写入到Excel文件中。从步骤I和步骤2可以看出,这两步占用了数据库资源和内存资源;步骤3中使用POI的方式,将查询结果写入Excel文件,这种方式首先根据查询结果生成XML (ExtensibleMarkup Language,可扩展标记语言)文件并将其载入内存,然后再写入Excel。在实际应用中,要导出的查询结果数据量通常会比较大,往往达到10万级以上,使用上述方法对查询结果进行Excel导出操作,占用的系统内存资源比较大,而且耗时较长,并且随着数据量的增大占用的系统内存以及所耗时间增幅较大;因查询结果导出到Excel文件中的操作使用是比较频繁的,如果短期内频繁的执行该操作的话,网管服务器会采用多个线程并发处理,这样每个导出所需要的时间就被拉长了,在这段时间内的每个线程申请的内存空间都在使用状态,前一次的大数据量导出还没有完成,后一次导出操作又开始执行,最终会导致网管服务器内存耗尽。同时查询结果数据导出到Excel文件的频繁执行,会导致内存在短时间内被填满,使得其他线程申请不到内存,会导致服务的异常。

发明内容
本发明的目的在于,提供一种网管服务器机器将查询结果导出成Excel文件的方法,以优化现有技术在导出查询结果数据时消耗时间长、占用系统资源多的问题。本发明提供了一种网管服务器将查询结果导出成Excel文件的方法,包括以下步骤网管服务器收到查询结果导出到Excel请求时,创建查询语句;根据上述查询语句,获取查询结果的标题头信息,生成标题头表;根据上述查询语句,生成查询视根据上述标题头表及上述查询视图,生成BCP命令,将查询结果写入Excel文件中。优选地,上述根据查询语句,生成查询视图步骤具体包括以下步骤根据上述查询语句,生成临时视图;遍历上述临时视图,将查询结果字段的数据类型转换成字符类型,得到查询视图。优选地,上述方法通过convert语句将上述查询结果字段的数据类型转换成字符类型。优选地,上述根据标题头表及查询视图,生成BCP命令步骤具体为
将上述标题头表的select语句与上述查询视图的select语句通过union all合并,生成BCP命令。本发明进一步提供了一种网管服务器,包括查询语句创建模块、标题头表生成模块、查询视图生成模块、以及BCP命令生成模块,上述查询语句创建模块,用于根据收到的查询结果导出到Excel请求,创建查询语句;上述标题头表生成模块,用于根据上述查询语句创建模块创建的查询语句,获取查询结果的标题头信息,生成标题头表;上述查询视图生成模块,用于根据上述查询语句创建模块创建的查询语句,生成查询视图;上述BCP命令生成模块,用于根据上述标题头表生成模块生成的标题头表及上述查询视图生成模块生成的查询视图,生成BCP命令,并将查询结果写入Excel文件中。优选地,上述查询视图生成模块,还用于生成临时视图,并通过convert语句遍历上述临时视图,将上述临时视图的查询结果字段的数据类型转换成字符类型;上述BCP命令生成模块,还用于通过union all合并上述标题头表生成模块生成的标题头表的select语句与上述查询视图生成模块生成的查询视图的select语句。与现有技术相比,一方面,本发明无需查询SQL Server数据库,减少了数据库的压力,使得在导出同样数据量的查询结果数据时所消耗的时间减少,且占用系统资源降低,尤其是在数据量大时,本发明表现更优异;另一方面,本发明使用SQL Server提供的BCP命令,将查询结果导入到Excel文件,实现了标题内容和数据内容的一并导出且格式正确。本发明适用于移动通信系统。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I是本发明网管服务器将查询结果导出成Excel文件的方法流程图;图2是相同运行环境相同负荷下,本发明的方法和现有的方法导出相同数据量的查询结果数据消耗的时间对比图;图3是相同运行环境相同负荷下,本发明的方法和现有的方法导出相同数据量的查询结果数据占用系统内存的对比图;图4是本发明网关服务器的原理框图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。如图I所示,是本发明网管服务器将查询结果导出成Excel文件的方法流程图,包括以下步骤步骤SOOl :网管服务器收到查询结果导出到Excel请求;步骤S002 :根据上述请求,创建查询语句;步骤S003 :根据上述查询语句,获取查询结果的标题头信息,生成标题头表;
本步骤无需实际查询数据库中的性能数据,这样与数据库链接时间较短,而且省去了查询数据库大量数据所占用的系统内存资源。步骤S004 :根据上述查询语句,生成临时视图,遍历上述临时视图,通过convert语句将查询结果字段的数据类型转换成字符类型,生成查询视图;因SQL (Structured Query Language,结构化查询语言)查询语句较长,其总字符长度可能会超过SQL Server数据库的BCP中的SQL语句的长度,故本步骤中的临时视图是为了使查询语句能够完整而创建的,只是一个临时的虚的视图。本步骤使得查询视图的数据类型与上述标题头表的数据类型一致。步骤S005 :将上述标题头表的select语句与上述查询视图的select语句通过union all合并,生成BCP命令,将查询结果写入Excel文件中。BCP命令是SQL Server数据库中负责导入导出数据的一个命令行工具,它能以并行的方式高效地导入导出大批量的数据,但是该命令只能导出数据,不能导出标题头,需要应用程序自己处理表头和数据的导出问题,并且导出语句存在长度以及导出数据类型不一致的问题。本发明通过convert语句将查询结果字段的数据类型转换成字符类型,使得查询视图的数据类型与标题头表的数据类型一致,并通过使用union all将标题头表的select语句和查询视图的select语句合并,保证了内容导出到Excel后,标题头的内容位于查询结果数据内容的上方,处于合理的位置,即实现了标题内容和数据内容的一并导出。如图2所示,是相同运行环境相同负荷下,本发明的方法和现有的方法导出相同数据量的查询结果数据消耗的时间对比图;图中,实线表示本发明的方法导出相同数据量的查询结果数据消耗的时间曲线,虚线表示现有的方法导出相同数据量的查询结果数据消耗的时间曲线。假设网管服务器无其他的负载,本测试对导出相同的12列基站性能数据进行5次试验(横轴),可以看出现有的方法随着导出数据量的增大,消耗的时间大幅增加,甚至在数据量达到20万条时,已经无法导出数据,而本发明的方法在导出同样数据量的查询结果数据所消耗的时间要低很多,在数据量达到20万条时,也只需要17s的时间。本发明对于查询结果导出时间上的缩短,帮助了网管系统节省系统资源,应用程序也能够更快的释放占用的资源以便其他程序使用。如图3所示,是相同运行环境相同负荷下,本发明的方法和现有的方法导出相同数据量的查询结果数据占用系统内存的对比图;图中,实线表示本发明的方法导出相同数据量的查询结果数据占用系统内存曲线,虚线表示现有的方法导出相同数据量的查询结果数据占用系统内存曲线。本测试对导出相同的12列基站性能数据进行5次试验(横轴),可以看出,现有方法随着数据量的增大,所占用内存大小大幅的增大,导出20万条数据量时已经占用到了650M;而采用本发明的方法,省去了将查询结果载入内存这一步,并且采用的是SQL Server数据库本身的BCP命令,在处理大规模数据方面表现优异,所内存占用明显比较少,数据量达到20万条时,只占用了 300M内存,比现有方法所占内存的一半还少,占用的系统资源大幅的降低,使得服务器的资源可以应对更大量数据导出的应用场景。如图4所示,是本发明网关服务器的原理框图,本实施例包括查询语句创建模块
01、标题头表生成模块02、查询视图生成模块03、以及BCP命令生成模块04,
查询语句创建模块01,用于根据收到的查询结果导出到Excel请求,创建查询语句;标题头表生成模块02,用于根据查询语句创建模块01创建的查询语句,获取查询结果的标题头信息,生成标题头表;查询视图生成模块03,用于根据查询语句创建模块01创建的查询语句,生成临时视图,并通过convert语句遍历上述临时视图,将上述临时视图的查询结果字段的数据类型转换成字符类型,生成查询视图;BCP命令生成模块04,用于通过union all合并标题头表生成模块02生成的标题头表的select语句与查询视图生成模块03生成的查询视图的select语句生成BCP命令,并将查询结果写入Excel文件中。上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种网管服务器将查询结果导出成Excel文件的方法,其特征在于,包括以下步骤 网管服务器收到查询结果导出到Excel请求时,创建查询语句; 根据所述查询语句,获取查询结果的标题头信息,生成标题头表; 根据所述查询语句,生成查询视图; 根据所述标题头表及所述查询视图,生成BCP命令,将查询结果写入Excel文件中。
2.根据权利要求I所述的方法,其特征在于,所述根据查询语句,生成查询视图步骤具体包括以下步骤 根据所述查询语句,生成临时视图; 遍历所述临时视图,将查询结果字段的数据类型转换成字符类型,得到查询视图。
3.根据权利要求2所述的方法,其特征在于,所述方法通过convert语句将所述查询结果字段的数据类型转换成字符类型。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据标题头表及查询视图,生成BCP命令步骤具体为 将所述标题头表的select语句与所述查询视图的select语句通过union all合并,生成BCP命令。
5.一种网管服务器,其特征在于,包括查询语句创建模块、标题头表生成模块、查询视图生成模块、以及BCP命令生成模块, 所述查询语句创建模块,用于根据收到的查询结果导出到Excel请求,创建查询语句; 所述标题头表生成模块,用于根据所述查询语句创建模块创建的查询语句,获取查询结果的标题头信息,生成标题头表; 所述查询视图生成模块,用于根据所述查询语句创建模块创建的查询语句,生成查询视图; 所述BCP命令生成模块,用于根据所述标题头表生成模块生成的标题头表及所述查询视图生成模块生成的查询视图,生成BCP命令,并将查询结果写入Excel文件中。
6.根据权利要求5所述的网管服务器,其特征在于, 所述查询视图生成模块,还用于生成临时视图,并通过convert语句遍历所述临时视图,将所述临时视图的查询结果字段的数据类型转换成字符类型; 所述BCP命令生成模块,还用于通过union all合并所述标题头表生成模块生成的标题头表的select语句与所述查询视图生成模块生成的查询视图的select语句。
全文摘要
本发明涉及一种网管服务器及其将查询结果导出成Excel文件的方法,上述方法为网管服务器收到查询结果导出到Excel请求时,创建查询语句,根据上述查询语句,获取查询结果的标题头信息,生成标题头表,再根据上述查询语句,生成查询视图,然后根据上述标题头表及上述查询视图,生成BCP命令,将查询结果写入Excel文件中。本发明使得在导出同样数据量的查询结果数据时所消耗的时间减少,且占用系统资源降低。
文档编号G06F17/30GK102769532SQ20111011284
公开日2012年11月7日 申请日期2011年5月3日 优先权日2011年5月3日
发明者陈影 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1