專利名稱:網(wǎng)管服務(wù)器及其將查詢結(jié)果導(dǎo)出成Excel文件的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)性能管理領(lǐng)域,尤其涉及一種網(wǎng)管服務(wù)器及其將查詢結(jié)果導(dǎo)出成Excel文件的方法。
背景技術(shù):
在移動通信系統(tǒng)中,設(shè)備的性能數(shù)據(jù)是通過對基站上報的數(shù)據(jù)進行取樣、計算、分析得到的一種量化管理數(shù)據(jù),是反映整個設(shè)備運行狀態(tài)的最直觀體現(xiàn),對于大規(guī)模商用網(wǎng)絡(luò)的網(wǎng)絡(luò)規(guī)劃、優(yōu)化等起著重要的作用。目前的網(wǎng)管系統(tǒng)的性能管理提供了性能數(shù)據(jù)查詢以及導(dǎo)出功能,運營商或網(wǎng)優(yōu)工作人員可以根據(jù)需要將系統(tǒng)運行數(shù)據(jù)按照設(shè)備、時間查詢并導(dǎo)出數(shù)據(jù)到Excel進行匯總分析并存檔,以掌握本地網(wǎng)絡(luò)的整體情況,以指導(dǎo)定位問題或進行網(wǎng)絡(luò)優(yōu)化?,F(xiàn)有的網(wǎng)管服務(wù)器將設(shè)備性能數(shù)據(jù)的查詢結(jié)果導(dǎo)出到Excel文件的方法主要包括以下步驟I、查詢網(wǎng)管性能數(shù)據(jù)庫,獲取性能數(shù)據(jù)查詢結(jié)果集;2、將查詢結(jié)果集加載入內(nèi)存;3、循環(huán)調(diào)用Apache Excel API POI,將查詢結(jié)果寫入到Excel文件中。從步驟I和步驟2可以看出,這兩步占用了數(shù)據(jù)庫資源和內(nèi)存資源;步驟3中使用POI的方式,將查詢結(jié)果寫入Excel文件,這種方式首先根據(jù)查詢結(jié)果生成XML (ExtensibleMarkup Language,可擴展標記語言)文件并將其載入內(nèi)存,然后再寫入Excel。在實際應(yīng)用中,要導(dǎo)出的查詢結(jié)果數(shù)據(jù)量通常會比較大,往往達到10萬級以上,使用上述方法對查詢結(jié)果進行Excel導(dǎo)出操作,占用的系統(tǒng)內(nèi)存資源比較大,而且耗時較長,并且隨著數(shù)據(jù)量的增大占用的系統(tǒng)內(nèi)存以及所耗時間增幅較大;因查詢結(jié)果導(dǎo)出到Excel文件中的操作使用是比較頻繁的,如果短期內(nèi)頻繁的執(zhí)行該操作的話,網(wǎng)管服務(wù)器會采用多個線程并發(fā)處理,這樣每個導(dǎo)出所需要的時間就被拉長了,在這段時間內(nèi)的每個線程申請的內(nèi)存空間都在使用狀態(tài),前一次的大數(shù)據(jù)量導(dǎo)出還沒有完成,后一次導(dǎo)出操作又開始執(zhí)行,最終會導(dǎo)致網(wǎng)管服務(wù)器內(nèi)存耗盡。同時查詢結(jié)果數(shù)據(jù)導(dǎo)出到Excel文件的頻繁執(zhí)行,會導(dǎo)致內(nèi)存在短時間內(nèi)被填滿,使得其他線程申請不到內(nèi)存,會導(dǎo)致服務(wù)的異常。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種網(wǎng)管服務(wù)器機器將查詢結(jié)果導(dǎo)出成Excel文件的方法,以優(yōu)化現(xiàn)有技術(shù)在導(dǎo)出查詢結(jié)果數(shù)據(jù)時消耗時間長、占用系統(tǒng)資源多的問題。本發(fā)明提供了一種網(wǎng)管服務(wù)器將查詢結(jié)果導(dǎo)出成Excel文件的方法,包括以下步驟網(wǎng)管服務(wù)器收到查詢結(jié)果導(dǎo)出到Excel請求時,創(chuàng)建查詢語句;根據(jù)上述查詢語句,獲取查詢結(jié)果的標題頭信息,生成標題頭表;根據(jù)上述查詢語句,生成查詢視根據(jù)上述標題頭表及上述查詢視圖,生成BCP命令,將查詢結(jié)果寫入Excel文件中。優(yōu)選地,上述根據(jù)查詢語句,生成查詢視圖步驟具體包括以下步驟根據(jù)上述查詢語句,生成臨時視圖;遍歷上述臨時視圖,將查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型,得到查詢視圖。優(yōu)選地,上述方法通過convert語句將上述查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型。優(yōu)選地,上述根據(jù)標題頭表及查詢視圖,生成BCP命令步驟具體為
將上述標題頭表的select語句與上述查詢視圖的select語句通過union all合并,生成BCP命令。本發(fā)明進一步提供了一種網(wǎng)管服務(wù)器,包括查詢語句創(chuàng)建模塊、標題頭表生成模塊、查詢視圖生成模塊、以及BCP命令生成模塊,上述查詢語句創(chuàng)建模塊,用于根據(jù)收到的查詢結(jié)果導(dǎo)出到Excel請求,創(chuàng)建查詢語句;上述標題頭表生成模塊,用于根據(jù)上述查詢語句創(chuàng)建模塊創(chuàng)建的查詢語句,獲取查詢結(jié)果的標題頭信息,生成標題頭表;上述查詢視圖生成模塊,用于根據(jù)上述查詢語句創(chuàng)建模塊創(chuàng)建的查詢語句,生成查詢視圖;上述BCP命令生成模塊,用于根據(jù)上述標題頭表生成模塊生成的標題頭表及上述查詢視圖生成模塊生成的查詢視圖,生成BCP命令,并將查詢結(jié)果寫入Excel文件中。優(yōu)選地,上述查詢視圖生成模塊,還用于生成臨時視圖,并通過convert語句遍歷上述臨時視圖,將上述臨時視圖的查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型;上述BCP命令生成模塊,還用于通過union all合并上述標題頭表生成模塊生成的標題頭表的select語句與上述查詢視圖生成模塊生成的查詢視圖的select語句。與現(xiàn)有技術(shù)相比,一方面,本發(fā)明無需查詢SQL Server數(shù)據(jù)庫,減少了數(shù)據(jù)庫的壓力,使得在導(dǎo)出同樣數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)時所消耗的時間減少,且占用系統(tǒng)資源降低,尤其是在數(shù)據(jù)量大時,本發(fā)明表現(xiàn)更優(yōu)異;另一方面,本發(fā)明使用SQL Server提供的BCP命令,將查詢結(jié)果導(dǎo)入到Excel文件,實現(xiàn)了標題內(nèi)容和數(shù)據(jù)內(nèi)容的一并導(dǎo)出且格式正確。本發(fā)明適用于移動通信系統(tǒng)。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中圖I是本發(fā)明網(wǎng)管服務(wù)器將查詢結(jié)果導(dǎo)出成Excel文件的方法流程圖;圖2是相同運行環(huán)境相同負荷下,本發(fā)明的方法和現(xiàn)有的方法導(dǎo)出相同數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)消耗的時間對比圖;圖3是相同運行環(huán)境相同負荷下,本發(fā)明的方法和現(xiàn)有的方法導(dǎo)出相同數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)占用系統(tǒng)內(nèi)存的對比圖;圖4是本發(fā)明網(wǎng)關(guān)服務(wù)器的原理框圖。
具體實施例方式為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖I所示,是本發(fā)明網(wǎng)管服務(wù)器將查詢結(jié)果導(dǎo)出成Excel文件的方法流程圖,包括以下步驟步驟SOOl :網(wǎng)管服務(wù)器收到查詢結(jié)果導(dǎo)出到Excel請求;步驟S002 :根據(jù)上述請求,創(chuàng)建查詢語句;步驟S003 :根據(jù)上述查詢語句,獲取查詢結(jié)果的標題頭信息,生成標題頭表;
本步驟無需實際查詢數(shù)據(jù)庫中的性能數(shù)據(jù),這樣與數(shù)據(jù)庫鏈接時間較短,而且省去了查詢數(shù)據(jù)庫大量數(shù)據(jù)所占用的系統(tǒng)內(nèi)存資源。步驟S004 :根據(jù)上述查詢語句,生成臨時視圖,遍歷上述臨時視圖,通過convert語句將查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型,生成查詢視圖;因SQL (Structured Query Language,結(jié)構(gòu)化查詢語言)查詢語句較長,其總字符長度可能會超過SQL Server數(shù)據(jù)庫的BCP中的SQL語句的長度,故本步驟中的臨時視圖是為了使查詢語句能夠完整而創(chuàng)建的,只是一個臨時的虛的視圖。本步驟使得查詢視圖的數(shù)據(jù)類型與上述標題頭表的數(shù)據(jù)類型一致。步驟S005 :將上述標題頭表的select語句與上述查詢視圖的select語句通過union all合并,生成BCP命令,將查詢結(jié)果寫入Excel文件中。BCP命令是SQL Server數(shù)據(jù)庫中負責導(dǎo)入導(dǎo)出數(shù)據(jù)的一個命令行工具,它能以并行的方式高效地導(dǎo)入導(dǎo)出大批量的數(shù)據(jù),但是該命令只能導(dǎo)出數(shù)據(jù),不能導(dǎo)出標題頭,需要應(yīng)用程序自己處理表頭和數(shù)據(jù)的導(dǎo)出問題,并且導(dǎo)出語句存在長度以及導(dǎo)出數(shù)據(jù)類型不一致的問題。本發(fā)明通過convert語句將查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型,使得查詢視圖的數(shù)據(jù)類型與標題頭表的數(shù)據(jù)類型一致,并通過使用union all將標題頭表的select語句和查詢視圖的select語句合并,保證了內(nèi)容導(dǎo)出到Excel后,標題頭的內(nèi)容位于查詢結(jié)果數(shù)據(jù)內(nèi)容的上方,處于合理的位置,即實現(xiàn)了標題內(nèi)容和數(shù)據(jù)內(nèi)容的一并導(dǎo)出。如圖2所示,是相同運行環(huán)境相同負荷下,本發(fā)明的方法和現(xiàn)有的方法導(dǎo)出相同數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)消耗的時間對比圖;圖中,實線表示本發(fā)明的方法導(dǎo)出相同數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)消耗的時間曲線,虛線表示現(xiàn)有的方法導(dǎo)出相同數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)消耗的時間曲線。假設(shè)網(wǎng)管服務(wù)器無其他的負載,本測試對導(dǎo)出相同的12列基站性能數(shù)據(jù)進行5次試驗(橫軸),可以看出現(xiàn)有的方法隨著導(dǎo)出數(shù)據(jù)量的增大,消耗的時間大幅增加,甚至在數(shù)據(jù)量達到20萬條時,已經(jīng)無法導(dǎo)出數(shù)據(jù),而本發(fā)明的方法在導(dǎo)出同樣數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)所消耗的時間要低很多,在數(shù)據(jù)量達到20萬條時,也只需要17s的時間。本發(fā)明對于查詢結(jié)果導(dǎo)出時間上的縮短,幫助了網(wǎng)管系統(tǒng)節(jié)省系統(tǒng)資源,應(yīng)用程序也能夠更快的釋放占用的資源以便其他程序使用。如圖3所示,是相同運行環(huán)境相同負荷下,本發(fā)明的方法和現(xiàn)有的方法導(dǎo)出相同數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)占用系統(tǒng)內(nèi)存的對比圖;圖中,實線表示本發(fā)明的方法導(dǎo)出相同數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)占用系統(tǒng)內(nèi)存曲線,虛線表示現(xiàn)有的方法導(dǎo)出相同數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)占用系統(tǒng)內(nèi)存曲線。本測試對導(dǎo)出相同的12列基站性能數(shù)據(jù)進行5次試驗(橫軸),可以看出,現(xiàn)有方法隨著數(shù)據(jù)量的增大,所占用內(nèi)存大小大幅的增大,導(dǎo)出20萬條數(shù)據(jù)量時已經(jīng)占用到了650M;而采用本發(fā)明的方法,省去了將查詢結(jié)果載入內(nèi)存這一步,并且采用的是SQL Server數(shù)據(jù)庫本身的BCP命令,在處理大規(guī)模數(shù)據(jù)方面表現(xiàn)優(yōu)異,所內(nèi)存占用明顯比較少,數(shù)據(jù)量達到20萬條時,只占用了 300M內(nèi)存,比現(xiàn)有方法所占內(nèi)存的一半還少,占用的系統(tǒng)資源大幅的降低,使得服務(wù)器的資源可以應(yīng)對更大量數(shù)據(jù)導(dǎo)出的應(yīng)用場景。如圖4所示,是本發(fā)明網(wǎng)關(guān)服務(wù)器的原理框圖,本實施例包括查詢語句創(chuàng)建模塊
01、標題頭表生成模塊02、查詢視圖生成模塊03、以及BCP命令生成模塊04,
查詢語句創(chuàng)建模塊01,用于根據(jù)收到的查詢結(jié)果導(dǎo)出到Excel請求,創(chuàng)建查詢語句;標題頭表生成模塊02,用于根據(jù)查詢語句創(chuàng)建模塊01創(chuàng)建的查詢語句,獲取查詢結(jié)果的標題頭信息,生成標題頭表;查詢視圖生成模塊03,用于根據(jù)查詢語句創(chuàng)建模塊01創(chuàng)建的查詢語句,生成臨時視圖,并通過convert語句遍歷上述臨時視圖,將上述臨時視圖的查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型,生成查詢視圖;BCP命令生成模塊04,用于通過union all合并標題頭表生成模塊02生成的標題頭表的select語句與查詢視圖生成模塊03生成的查詢視圖的select語句生成BCP命令,并將查詢結(jié)果寫入Excel文件中。上述說明示出并描述了本發(fā)明的優(yōu)選實施例,但如前所述,應(yīng)當理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。
權(quán)利要求
1.一種網(wǎng)管服務(wù)器將查詢結(jié)果導(dǎo)出成Excel文件的方法,其特征在于,包括以下步驟 網(wǎng)管服務(wù)器收到查詢結(jié)果導(dǎo)出到Excel請求時,創(chuàng)建查詢語句; 根據(jù)所述查詢語句,獲取查詢結(jié)果的標題頭信息,生成標題頭表; 根據(jù)所述查詢語句,生成查詢視圖; 根據(jù)所述標題頭表及所述查詢視圖,生成BCP命令,將查詢結(jié)果寫入Excel文件中。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述根據(jù)查詢語句,生成查詢視圖步驟具體包括以下步驟 根據(jù)所述查詢語句,生成臨時視圖; 遍歷所述臨時視圖,將查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型,得到查詢視圖。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法通過convert語句將所述查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型。
4.根據(jù)權(quán)利要求1-3任一項所述的方法,其特征在于,所述根據(jù)標題頭表及查詢視圖,生成BCP命令步驟具體為 將所述標題頭表的select語句與所述查詢視圖的select語句通過union all合并,生成BCP命令。
5.一種網(wǎng)管服務(wù)器,其特征在于,包括查詢語句創(chuàng)建模塊、標題頭表生成模塊、查詢視圖生成模塊、以及BCP命令生成模塊, 所述查詢語句創(chuàng)建模塊,用于根據(jù)收到的查詢結(jié)果導(dǎo)出到Excel請求,創(chuàng)建查詢語句; 所述標題頭表生成模塊,用于根據(jù)所述查詢語句創(chuàng)建模塊創(chuàng)建的查詢語句,獲取查詢結(jié)果的標題頭信息,生成標題頭表; 所述查詢視圖生成模塊,用于根據(jù)所述查詢語句創(chuàng)建模塊創(chuàng)建的查詢語句,生成查詢視圖; 所述BCP命令生成模塊,用于根據(jù)所述標題頭表生成模塊生成的標題頭表及所述查詢視圖生成模塊生成的查詢視圖,生成BCP命令,并將查詢結(jié)果寫入Excel文件中。
6.根據(jù)權(quán)利要求5所述的網(wǎng)管服務(wù)器,其特征在于, 所述查詢視圖生成模塊,還用于生成臨時視圖,并通過convert語句遍歷所述臨時視圖,將所述臨時視圖的查詢結(jié)果字段的數(shù)據(jù)類型轉(zhuǎn)換成字符類型; 所述BCP命令生成模塊,還用于通過union all合并所述標題頭表生成模塊生成的標題頭表的select語句與所述查詢視圖生成模塊生成的查詢視圖的select語句。
全文摘要
本發(fā)明涉及一種網(wǎng)管服務(wù)器及其將查詢結(jié)果導(dǎo)出成Excel文件的方法,上述方法為網(wǎng)管服務(wù)器收到查詢結(jié)果導(dǎo)出到Excel請求時,創(chuàng)建查詢語句,根據(jù)上述查詢語句,獲取查詢結(jié)果的標題頭信息,生成標題頭表,再根據(jù)上述查詢語句,生成查詢視圖,然后根據(jù)上述標題頭表及上述查詢視圖,生成BCP命令,將查詢結(jié)果寫入Excel文件中。本發(fā)明使得在導(dǎo)出同樣數(shù)據(jù)量的查詢結(jié)果數(shù)據(jù)時所消耗的時間減少,且占用系統(tǒng)資源降低。
文檔編號G06F17/30GK102769532SQ20111011284
公開日2012年11月7日 申請日期2011年5月3日 優(yōu)先權(quán)日2011年5月3日
發(fā)明者陳影 申請人:中興通訊股份有限公司