本發明涉及通信領域,更具體地說,涉及一種服務器及數據導出方法。
背景技術:
在網頁管理系統中,導出數據到數據表格是個高頻功能。爪哇平臺中涌現了多種導出框架,廣泛應用在導出功能中,現有的導出框架能將少量數據導出。現有數據格式一般采用辦公公開可擴展語音(officeopenextensiblemarkuplanguage,ooxml)格式,其中,ooxml格式是微軟公司開發的技術規范,現已成為國際文檔格式標準格式。采用ooxml格式的表格可以存儲到1048576條數據,存儲量超過百萬。但是目前的數據導出框架,沒有考慮海量數據的導出場景,只能一次性讀取少量數據,然后導出到指定的文件中。如果從數據庫一次性讀取百萬級以上數據,服務器需要很大的內存才能存儲百萬級以上數據,存儲數據的內存過多會導致服務器存在很高的宕機風險,無法將大量數據快速導出。
技術實現要素:
鑒于此,本發明提供了一種服務器及數據導出方法,所述服務器及數據導出方法能快速導出大量數據,提高數據的導出效率。
本發明提供一種服務器,所述服務器包括:
查詢模塊,用于根據導出條件查詢所有待導出的數據,并計算所述所有待導出數據的數量;
劃分模塊,用于將所述所有待導出數據劃分為多個數據分頁;
導出模塊,用于將當前所述數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中。
可選地,所述劃分模塊包括:
計算模塊,用于根據每個數據分頁的數據量和所述所有待導出的數據計算出待分頁的分頁數目;
生成模塊,用于根據所述分頁數目將所述所有待導出的數據劃分為對應的數據分頁。
可選地,所述服務器包括:
判斷模塊,用于判斷當前所述數據分頁是否為最后一個的數據分頁;
應用模塊,用于當當前數據分頁不為最后一個的數據分頁時,清空所述當前數據分頁所占的內存,將所述當前數據分頁對應的下一個所述數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,所述數據分頁中的一條數據對應所述預設數據文件中的一個數據行節點。
可選地,所述查詢模塊,還用于根據瀏覽器客戶端輸入的導出條件確定百萬級以及百萬級以上的待導出的數據;
所述劃分模塊,還用于根據所述百萬級以及百萬級以上的待導出的數據以及每個數據分頁的數據量計算出待分頁的分頁數目,根據所述分頁數目將所述所有待導出的數據劃分為對應的數據分頁;
所述導出模塊,還用于依次將每個所述數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,所述數據分頁中的每條數據對應所述預設數據文件中的一個數據行節點。
可選地,所述服務器還包括:
檢測模塊,用于檢測內存中存儲的數據是否達到預設數目;
所述導出模塊,還用于當內存中存儲的數據達到預設數目時,將所述內存中存儲的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,所述內存中存儲的每條數據對應所述預設數據文件中的一個數據行節點。
本發明還提供了一種數據導出方法,所述數據導出方法包括:
根據導出條件查詢所有待導出的數據,并計算所述所有待導出數據的數量;
將所述所有待導出數據劃分為多個數據分頁;
將當前所述數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中。
可選地,所述將所述所有待導出數據劃分為多個數據分頁,包括:
根據每個數據分頁的數據量和所述所有待導出的數據計算出待分頁的分頁數目;
根據所述分頁數目將所述所有待導出的數據劃分為對應的數據分頁。
可選地,所述將當前所述數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中之后,所述方法還包括:
判斷當前所述數據分頁是否為最后一個的數據分頁;
當當前數據分頁不為最后一個的數據分頁時,清空所述當前數據分頁所占的內存;
將所述當前數據分頁對應的下一個所述數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,所述數據分頁中的一條數據對應所述預設數據文件中的一個數據行節點。
可選地,所述根據導出條件查詢所有待導出的數據之前或之后,所述方法還包括:
根據瀏覽器客戶端輸入的導出條件確定百萬級以及百萬級以上的待導出的數據;
根據所述百萬級以及百萬級以上的待導出的數據以及每個數據分頁的數據量計算出待分頁的分頁數目;
根據所述分頁數目將所述所有待導出的數據劃分為對應的數據分頁;
依次將每個所述數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,所述數據分頁中的每條數據對應所述預設數據文件中的一個數據行節點。
可選地,所述根據導出條件查詢所有待導出的數據之前或之后,所述方法還包括:
檢測內存中存儲的數據是否達到預設數目;
當內存中存儲的數據達到預設數目時,將所述內存中存儲的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,所述內存中存儲的每條數據對應所述預設數據文件中的一個數據行節點。
本發明提供的服務器及數據導出方法能根據導出條件查詢所有待導出的數據,并計算所述所有待導出數據的數量,將所述所有待導出數據劃分為多個數據分頁,當前所述數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,這樣,能將需要導出的大量數據進行分頁處理得到數據分頁,依次導出數據分頁的數據,并清除內存中的數據,能將快速導出大量數據,提高數據的導出效率。
附圖說明
圖1是實現本發明各個實施例服務器導出數據的應用環境圖;
圖2是本發明實施例一服務器的功能模塊圖;
圖3是本發明實施例二服務器的功能模塊圖;
圖4是本發明實施例三服務器的功能模塊圖;
圖5是本發明實施例四服務器的功能模塊圖;
圖6是本發明實施例五數據導出方法的流程圖;
圖7是本發明實施例六數據導出方法的流程圖;
圖8是本發明實施例七數據導出方法的流程圖;
圖9是本發明實施例八數據導出方法的流程圖。
本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
現在將參考附圖描述實現本發明各個實施例一可選的服務器。在后續的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發明的說明,其本身并沒有特定的意義。因此,"模塊"與"部件"可以混合地使用。
服務器可以以各種形式來實施。例如,本發明中描述的服務器可以包括諸如大型服務器、小型服務器。
圖1為實現本發明各個實施例服務器所在的應用環境示意圖。圖1中包括服務器10、終端270、筆記本271,其中,服務器10分別與終端270、筆記本271進行通信,服務器10中存儲大量數據,大量數據包括:應用數據、數據庫、日志、其他數據源的數據。
終端270、筆記本271可以向服務器10請求導出數據,服務器10可以接受終端270、筆記本271的請求,將數據導出至終端270、筆記本271。
補充說明的是,請求服務器10導出的設備可以為其他請求導出數據的裝置,在此僅僅示意性畫出兩個,在本實施例中對請求導出數據的裝置不做限制。
服務器10可以包括,但不限于,存儲器、控制器、無線通信單元、輸入單元、輸入單元、接口單元及電源單元。但是應當理解的是,并不要求實施所有組件。可以替代地實施更多或更少的組件。將在下面詳細描述服務器10的元件。
無線通信單元通常包括一個或多個組件,其允許服務器10與無線通信系統或網絡之間的無線點通信。例如,無線通信單元可以包括廣播生成模塊、移動通信模塊、無線互聯網模塊、短程通信模塊和位置消息模塊中的至少一個。
廣播生成模塊經由廣播信道從外部廣播管理服務器接收廣播信號和/或廣播相關消息。廣播信道可以包括衛星信道和/或地面信道。廣播管理服務器可以是生成并發送廣播信號和/或廣播相關消息的服務器或者接收之前生成的廣播信號和/或廣播相關消息并且將其發送給終端的服務器。廣播信號可以包括tv廣播信號、無線電廣播信號、數據廣播信號等等。而且,廣播信號可以進一步包括與tv或無線電廣播信號組合的廣播信號。廣播相關消息也可以經由移動通信網絡提供,并且在該情況下,廣播相關消息可以由移動通信模塊來接收。廣播信號可以以各種形式存在,例如,其可以以數字多媒體廣播(dmb)的電子節目指南(epg)、數字視頻或音頻廣播手持(dvb-h)的電子服務指南(esg)等等的形式而存在。廣播生成模塊可以通過使用各種類型的廣播系統接收信號廣播。特別地,廣播生成模塊可以通過使用諸如多媒體廣播-地面(dmb-t)、數字多媒體廣播-衛星(dmb-s)、數字視頻或音頻廣播-手持(dvb-h),前向鏈路媒體(mediaflo@)的數據廣播系統、地面數字廣播綜合服務(isdb-t)等等的數字廣播系統接收數字廣播。廣播生成模塊可以被構造為適合提供廣播信號的各種廣播系統以及上述數字廣播系統。經由廣播生成模塊接收的廣播信號和/或廣播相關消息可以存儲在存儲器或者其它類型的存儲介質中。
移動通信模塊將無線電信號發送到基站(例如,接入點、節點b等等)、外部終端以及服務器中的至少一個和/或從其接收無線電信號。這樣的無線電信號可以包括語言通話信號、視頻或音頻通話信號、或者根據文本和/或多媒體消息發送和/或接收的各種類型的數據。
無線互聯網模塊支持服務器的無線互聯網接入。該模塊可以內部或外部地耦接到終端。該模塊所涉及的無線互聯網接入技術可以包括wlan(無線lan)(wi-fi)、wibro(無線寬帶)、wimax(全球微波互聯接入)、hsdpa(高速下行鏈路分組接入)等等。
短程通信模塊是用于支持短程通信的模塊。短程通信技術的一些示例包括藍牙tm、射頻識別(rfid)、紅外數據協會(irda)、超寬帶(uwb)、紫蜂tm等等。
位置消息模塊是用于檢查或獲取服務器的位置消息的模塊。位置消息模塊的典型示例是gps(全球定位系統)。根據當前的技術,gps模塊計算來自三個或更多衛星的距離消息和準確的時間消息并且對于計算的消息應用三角測量法,從而根據經度、緯度和高度準確地計算三維當前位置消息。當前,用于計算位置和時間消息的方法使用三顆衛星并且通過使用另外的一顆衛星校正計算出的位置和時間消息的誤差。此外,gps模塊能夠通過實時地連續計算當前位置消息來計算速度消息。
輸出單元被構造為以視覺、音頻和/或觸覺方式提供輸出信號(例如,音頻信號、視頻或音頻信號、警報信號、振動信號等等)。輸出單元可以包括顯示單元、音頻輸出模塊、警報單元等等。
顯示單元可以顯示在服務器10中處理的消息。例如,當服務器10處于工作模式時,顯示單元可以顯示例如,文本消息收發、多媒體文件下載等等相關的用戶界面(ui)或圖形用戶界面(gui)。當服務器10處于視頻或音頻通話模式或者圖像捕獲模式時,顯示單元可以顯示捕獲的圖像和/或接收的圖像、示出視頻或音頻或圖像以及相關功能的ui或gui等等。
同時,當顯示單元和觸摸板以層的形式彼此疊加以形成觸摸屏時,顯示單元可以用作輸入裝置和輸出裝置。顯示單元可以包括液晶顯示器(lcd)、薄膜晶體管lcd(tft-lcd)、有機發光二極管(oled)顯示器、柔性顯示器、三維(3d)顯示器等等中的至少一種。這些顯示器中的一些可以被構造為透明狀以允許用戶從外部觀看,這可以稱為透明顯示器,典型的透明顯示器可以例如為toled(透明有機發光二極管)顯示器等等。根據特定想要的實施方式,服務器10可以包括兩個或更多顯示單元(或其它顯示裝置),例如,服務器可以包括外部顯示單元(未示出)和內部顯示單元(未示出)。觸摸屏可用于檢測觸摸輸入壓力以及觸摸輸入位置和觸摸輸入面積。
音頻輸出模塊可以在服務器處于記錄模式、語言識別模式、廣播接收模式等等模式下時,將無線通信單元接收的或者在存儲器中存儲的音頻數據轉換音頻信號并且輸出為聲音。而且,音頻輸出模塊可以提供與服務器10執行的特定功能相關的音頻輸出(例如,呼叫信號接收聲音、消息接收聲音等等)。音頻輸出模塊可以包括揚聲器、蜂鳴器等等。
警報單元可以提供輸出以將事件的發生通知給服務器10。典型的事件可以包括呼叫接收、消息接收、鍵信號輸入、觸摸輸入等等。除了音頻或視頻或音頻輸出之外,警報單元可以以不同的方式提供輸出以通知事件的發生。例如,警報單元可以以振動的形式提供輸出,當接收到呼叫、消息或一些其它進入通信(incomingcommunication)時,警報單元可以提供觸覺輸出(即,振動)以將其通知給用戶。通過提供這樣的觸覺輸出,即使在用戶的移動電話處于用戶的口袋中時,用戶也能夠識別出各種事件的發生。警報單元也可以經由顯示單元或音頻輸出模塊提供通知事件的發生的輸出。
輸入單元可以根據用戶輸入的命令生成鍵輸入數據以控制服務器的各種操作。輸入單元允許用戶輸入各種類型的消息,并且可以包括鍵盤、鍋仔片、觸摸板(例如,檢測由于被接觸而導致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖桿等等。特別地,當觸摸板以層的形式疊加在顯示單元上時,可以形成觸摸屏。在本發明的實施例中,所述輸入單元包括觸控屏及水墨屏。
接口單元用作至少一個外部裝置與服務器10連接可以通過的接口。例如,外部裝置可以包括有線或無線頭戴式耳機端口、外部電源(或電池充電器)端口、有線或無線數據端口、存儲卡端口、用于連接具有識別模塊的裝置的端口、音頻輸入/輸出(i/o)端口、視頻或音頻i/o端口、耳機端口等等。識別模塊可以是存儲用于驗證用戶使用服務器10的各種消息并且可以包括用戶識別模塊(uim)、客戶識別模塊(sim)、通用客戶識別模塊(usim)等等。另外,具有識別模塊的裝置(下面稱為"識別裝置")可以采取智能卡的形式,因此,識別裝置可以經由端口或其它連接裝置與服務器10連接。接口單元可以用于接收來自外部裝置的輸入(例如,數據消息、電力等等)并且將接收到的輸入傳輸到服務器10內的一個或多個元件或者可以用于在服務器和外部裝置之間傳輸數據。
另外,當服務器10與外部底座連接時,接口單元可以用作允許通過其將電力從底座提供到服務器10的路徑或者可以用作允許從底座輸入的各種命令信號通過其傳輸到服務器的路徑。從底座輸入的各種命令信號或電力可以用作用于識別服務器是否準確地安裝在底座上的信號。
存儲器可以存儲由控制器執行的處理和控制操作的軟件程序等等,或者可以暫時地存儲己經輸出或將要輸出的數據(例如,電話簿、消息、靜態圖像、視頻或音頻等等)。而且,存儲器可以存儲關于當觸摸施加到觸摸屏時輸出的各種方式的振動和音頻信號的數據。
存儲器可以包括至少一種類型的存儲介質,所述存儲介質包括閃存、硬盤、多媒體卡、卡型存儲器(例如,sd或dx存儲器等等)、隨機訪問存儲器(ram)、靜態隨機訪問存儲器(sram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、可編程只讀存儲器(prom)、磁性存儲器、磁盤、光盤等等。而且,服務器10可以與通過網絡連接執行存儲器的存儲功能的網絡存儲裝置協作。
控制器通常控制服務器的總體操作。例如,控制器執行與語言通話、數據通信、視頻或音頻通話等等相關的控制和處理。另外,控制器可以包括用于再現(或回放)多媒體數據的多媒體模塊,多媒體模塊可以構造在控制器內,或者可以構造為與控制器分離。控制器可以執行模式識別處理,以將在觸摸屏上執行的手寫輸入或者圖片繪制輸入識別為字符或圖像。
電源單元在控制器的控制下接收外部電力或內部電力并且提供操作各元件和組件所需的適當的電力。
這里描述的各種實施方式可以以使用例如計算機軟件、硬件或其任何組合的計算機可讀介質來實施。對于硬件實施,這里描述的實施方式可以通過使用特定用途集成電路(asic)、數字信號處理器(dsp)、數字信號處理裝置(dspd)、可編程邏輯裝置(pld)、現場可編程門陣列(fpga)、處理器、控制器、微控制器、微處理器、被設計為執行這里描述的功能的電子單元中的至少一種來實施,在一些情況下,這樣的實施方式可以在控制器中實施。對于軟件實施,諸如過程或功能的實施方式可以與允許執行至少一種功能或操作的單獨的軟件模塊來實施。軟件代碼可以由以任何適當的編程語言編寫的軟件應用程序(或程序)來實施,軟件代碼可以存儲在存儲器中并且由控制器執行。
基于上述服務器硬件結構,提出本發明方法各個實施例。
基于上述服務器硬件結構以及通信系統,提出本發明方法各個實施例。
請參閱圖2,圖2是本發明實施例一服務器的功能模塊圖。圖2所示的服務器10包括查詢模塊101、劃分模塊102、導出模塊103。下面對功能模塊進行詳細說明。
服務器10的查詢模塊101根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量。服務器10的劃分模塊102將所有待導出數據劃分為多個數據分頁。服務器10的導出模塊103將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。
舉例來說,導出條件是全省年齡在15歲至18歲的青少年資料,服務器10的查詢模塊101根據導出條件查詢全省所有年齡在15歲至18歲的青少年資料,假設計算出全省年齡在15歲至18歲的青少年資料有100萬條。假設每個數據分頁中存儲的數據有1000條,服務器10的劃分模塊102將100萬待導出數據劃分為1000個數據分頁,每個數據分頁中包括1000條數據。服務器10的導出模塊103依次導出1000個數據分頁,具體來說,將將第一個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。將第1個數據分頁導出后,將第一個數據分頁所占內存清空。然后,依次導出第2個數據分頁,并將第2個數據分頁所占內存清空。直至導出第1000個數據分頁,將第100個數據分頁所占內存清空。
補充說明的是,所有待導出數據的數量可以是百萬級的數量,通過數據分頁將大量的數據劃分為適合導出的多個分頁數據,在導出過程中,通過依次將多個數據分頁導出,實現導出所有待導出數據的操作。進一步說明的是,預設數據文件為用戶選擇或者系統默認格式的文件,舉例來說,預設格式文件可以為微軟公司的excel文件。在微軟公司的excel2007及以上版本中,采用辦公公開標記語言(officeopenextensiblemarkuplanguage,ooxml),其中,ooxml微軟公司為office2007開發的技術規范,現已成為國際文檔格式標準,ooxml表格可以存儲到1048576條數據,存儲量超過百萬。
本實施例提供的服務器能根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量,將所有待導出數據劃分為多個數據分頁,將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。這樣,服務器能將大量待導出數據劃分為數據分頁,通過依次導出數據分頁實現大量數據的快速導出,提高導出大量數據的效率。
請參閱圖3,圖3是本發明實施例二服務器的功能模塊圖。圖3所示的服務器10包括查詢模塊101、劃分模塊102、導出模塊103。其中,劃分模塊102包括計算模塊1021、生成模塊1022。下面對功能模塊進行詳細說明。
服務器10的查詢模塊101根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量。服務器10的劃分模塊102將所有待導出數據劃分為多個數據分頁。服務器10的導出模塊103將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。
具體來說,劃分模塊包括計算模塊1021、生成模塊1022。計算模塊1021根據每個數據分頁的數據量和所有待導出的數據計算出待分頁的分頁數目。生成模塊1022根據分頁數目將所有待導出的數據劃分為對應的數據分頁。
補充說明的是,所有待導出數據的數量可以是百萬級的數量,通過數據分頁將大量的數據劃分為適合導出的多個分頁數據,在導出過程中,通過依次將多個數據分頁導出,實現導出所有待導出數據的操作。進一步說明的是,預設數據文件為用戶選擇或者系統默認格式的文件,舉例來說,預設格式文件可以為微軟公司的excel文件。
舉例來說,導出條件是全省年齡在15歲至18歲的青少年資料,服務器10的查詢模塊101根據導出條件查詢全省所有年齡在15歲至18歲的青少年資料,假設計算出全省年齡在15歲至18歲的青少年資料有100萬條。假設每個數據分頁中存儲的數據有1000條,服務器10的計算模塊1021根據每個數據分頁的數據量為1000個數據、和所有待導出的數據為100萬個數據,計算出待分頁的分頁數目為1000個。生成模塊1022根據分頁數目為1000個,將所有待導出的100萬數據劃分為1000個數據分頁。服務器10的導出模塊103依次導出1000個數據分頁,具體來說,將將第一個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。將第1個數據分頁導出后,將第一個數據分頁所占內存清空。然后,依次導出第2個數據分頁,并將第2個數據分頁所占內存清空。直至導出第1000個數據分頁,將第100個數據分頁所占內存清空。
本實施例提供的服務器能根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量,將所有待導出數據劃分為多個數據分頁,將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,并持久化到預設數據文件中。這樣,服務器能將大量待導出數據劃分為數據分頁,通過依次導出數據分頁實現大量數據的快速導出,提高導出大量數據的效率。
請參閱圖4,圖4是本發明實施例三服務器的功能模塊圖。圖4所示的服務器10包括查詢模塊101、劃分模塊102、導出模塊103、判斷模塊104、應用模塊105、檢測模塊106。其中,劃分模塊102包括計算模塊1021、生成模塊1022。下面對功能模塊進行詳細說明。
服務器10的查詢模塊101根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量。服務器10的劃分模塊102將所有待導出數據劃分為多個數據分頁。服務器10的導出模塊103將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。
具體來說,劃分模塊包括計算模塊1021、生成模塊1022。計算模塊1021根據每個數據分頁的數據量和所有待導出的數據計算出待分頁的分頁數目。生成模塊1022根據分頁數目將所有待導出的數據劃分為對應的數據分頁。
補充說明的是,判斷模塊104判斷當前數據分頁是否為最后一個的數據分頁。當當前數據分頁不為最后一個的數據分頁時,應用模塊105清空當前數據分頁所占的內存,將當前數據分頁對應的下一個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空。當當前數據分頁為最后一個的數據分頁時,服務器10的查詢模塊101重新根據下一個導出條件查詢所有待導出的數據,并計算所有待導出數據的數量。
進一步補充說明的是,查詢模塊101根據瀏覽器客戶端輸入的導出條件確定百萬級以及百萬級以上的待導出的數據。劃分模塊102根據百萬級以及百萬級以上的待導出的數據以及數據分頁的數據量計算出待分頁的分頁的數目,根據分頁數目將所有待導出的數據劃分為對應的數據分頁。導出模塊103依次將每個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,數據分頁中的每條數據對應預設數據文件中的一個數據行節點。
另外,檢測模塊106檢測內存中存儲的數據是否達到預設數目,當內存中存儲的數據達到預設數目時,導出模塊103將內存中存儲的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,內存中存儲的每條數據對應預設數據文件中的一個數據行節點。
補充說明的是,所有待導出數據的數量可以是百萬級的數量,通過數據分頁將大量的數據劃分為適合導出的多個分頁數據,在導出過程中,通過依次將多個數據分頁導出,實現導出所有待導出數據的操作。進一步說明的是,預設數據文件為用戶選擇或者系統默認格式的文件,舉例來說,預設格式文件可以為微軟公司的excel文件。
本實施例提供的服務器能根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量,將所有待導出數據劃分為多個數據分頁,將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。這樣,服務器能將大量待導出數據劃分為數據分頁,通過依次導出數據分頁實現大量數據的快速導出,提高導出大量數據的效率。
本發明還提供一種數據導出方法,該方法應用于圖2-4所示的服務器10,下面對本實施例的數據導出方法進行詳細介紹。
參閱圖5,圖5是本發明實施例四數據導出方法的流程圖。
在步驟s501中,服務器10的查詢模塊101根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量。
在步驟s502中,服務器10的劃分模塊102將所有待導出數據劃分為多個數據分頁。
在步驟s503中,服務器10的導出模塊103將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。
補充說明的是,所有待導出數據的數量可以是百萬級的數量,通過數據分頁將大量的數據劃分為適合導出的多個分頁數據,在導出過程中,通過依次將多個數據分頁導出,實現導出所有待導出數據的操作。進一步說明的是,預設數據文件為用戶選擇或者系統默認格式的文件,舉例來說,預設格式文件可以為微軟公司的excel文件。
舉例來說,導出條件是全省年齡在55歲至60歲的老年人資料,服務器10的查詢模塊101根據導出條件查詢全省所有年齡在55歲至60歲的老年人資料,假設計算出全省年齡在55歲至60歲的老年人資料有200萬條。假設每個數據分頁中存儲的數據有2000條,服務器10的劃分模塊102將200萬待導出數據劃分為1000個數據分頁,每個數據分頁中包括2000條數據。服務器10的導出模塊103依次導出1000個數據分頁,具體來說,將將第一個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。將第1個數據分頁導出后,將第一個數據分頁所占內存清空。然后,依次導出第2個數據分頁,并將第2個數據分頁所占內存清空。直至導出第1000個數據分頁,將第1000個數據分頁所占內存清空。
本實施例提供的數據導出方法能根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量,將所有待導出數據劃分為多個數據分頁,將當前數據分頁中的每條數據轉化成二進制流。這樣,數據導出方法能將大量待導出數據劃分為數據分頁,通過依次導出數據分頁實現大量數據的快速導出,提高導出大量數據的效率。
參閱圖6,圖6是本發明實施例四數據導出方法的流程圖。該方法應用于圖2-4所示的服務器10,下面對本實施例的數據導出方法進行詳細介紹。
在步驟s601中,服務器10的查詢模塊101根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量。
在步驟s602中,計算模塊1021根據每個數據分頁的數據量和所有待導出的數據計算出待分頁的分頁數目。
在步驟s603中,生成模塊1022根據分頁數目將所有待導出的數據劃分為對應的數據分頁。
在步驟s604中,服務器10的導出模塊103將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。
補充說明的是,所有待導出數據的數量可以是百萬級的數量,通過數據分頁將大量的數據劃分為適合導出的多個分頁數據,在導出過程中,通過依次將多個數據分頁導出,實現導出所有待導出數據的操作。進一步說明的是,預設數據文件為用戶選擇或者系統默認格式的文件,舉例來說,預設格式文件可以為微軟公司的excel文件。
舉例來說,導出條件是全省年齡在25歲至40歲的中年人資料,服務器10的查詢模塊101根據導出條件查詢全省所有年齡在25歲至40歲的中年人資料,假設計算出全省年齡25歲至40歲的中年人資料有300萬條。假設每個數據分頁中存儲的數據有2000條,服務器10的計算模塊1021根據每個數據分頁的數據量為2000個數據、和所有待導出的數據為300萬個數據,計算出待分頁的分頁數目為1500個。生成模塊1022根據分頁數目為1500個,將所有待導出的300萬數據劃分為1500個數據分頁。服務器10的導出模塊103依次導出1500個數據分頁,具體來說,將將第一個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。將第1個數據分頁導出后,將第一個數據分頁所占內存清空。然后,依次導出第2個數據分頁,并將第2個數據分頁所占內存清空。直至導出第1500個數據分頁,將第1500個數據分頁所占內存清空。
本實施例提供的數據導出方法能根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量,將所有待導出數據劃分為多個數據分頁,將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空。這樣,數據導出方法能將大量待導出數據劃分為數據分頁,通過依次導出數據分頁實現大量數據的快速導出,提高導出大量數據的效率。
參閱圖7,圖7是本發明實施例六數據導出方法的流程圖。該方法應用于圖2-4所示的服務器10,下面對本實施例的數據導出方法進行詳細介紹。
在步驟s701中,服務器10的查詢模塊101根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量。
在步驟s702中,服務器10的劃分模塊102將所有待導出數據劃分為多個數據分頁。
具體來說,步驟s702包括:計算模塊1021根據每個數據分頁的數據量和所有待導出的數據計算出待分頁的分頁數目;生成模塊1022根據分頁數目將所有待導出的數據劃分為對應的數據分頁。
在步驟s703中,服務器10的導出模塊103將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。
在步驟s704中,判斷模塊104判斷當前數據分頁是否為最后一個的數據分頁。
在步驟s705中,當當前數據分頁不為最后一個的數據分頁時,應用模塊105清空當前數據分頁所占的內存。
在步驟s706中,將當前數據分頁對應的下一個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。
當當前數據分頁為最后一個的數據分頁時,進入步驟s701,服務器10的查詢模塊101重新根據下一個導出條件查詢所有待導出的數據,并計算所有待導出數據的數量。
舉例來說,導出條件是全省年齡在25歲至40歲的中年人資料,服務器10的查詢模塊101根據導出條件查詢全省所有年齡在25歲至40歲的中年人資料,假設計算出全省年齡25歲至40歲的中年人資料有300萬條。假設每個數據分頁中存儲的數據有2000條,服務器10的計算模塊1021根據每個數據分頁的數據量為2000個數據、和所有待導出的數據為300萬個數據,計算出待分頁的分頁數目為1500個。生成模塊1022根據分頁數目為1500個,將所有待導出的300萬數據劃分為1500個數據分頁。服務器10的導出模塊103依次導出1500個數據分頁,具體來說,將將第一個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。將第1個數據分頁導出后,將第一個數據分頁所占內存清空。然后,判斷模塊104判斷當前的第1個數據分頁是否為最后一個的數據分頁,當判斷出當前的第1個數據分頁不為最后一個數據分頁時,導出第2個數據分頁,并將第2個數據分頁所占內存清空。直至導出第1500個數據分頁,將第1500個數據分頁所占內存清空,判斷模塊104判斷當前的第1500個數據分頁為最后一個的數據分頁,確定將所有待導出的300萬數據導出完畢。
本實施例提供的數據導出方法能根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量,將所有待導出數據劃分為多個數據分頁,將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空。這樣,數據導出方法能將大量待導出數據劃分為數據分頁,通過依次導出數據分頁實現大量數據的快速導出,提高導出大量數據的效率。
參閱圖8,圖8是本發明實施例七數據導出方法的流程圖。該方法應用于圖2-4所示的服務器10,下面對本實施例的數據導出方法進行詳細介紹。
在步驟s801中,查詢模塊101根據瀏覽器客戶端輸入的導出條件確定百萬級以及百萬級以上的待導出的數據。
在步驟s802中,劃分模塊102根據百萬級以及百萬級以上的待導出的數據以及數據分頁的數據量計算出待分頁的分頁的數目。
在步驟s803中,根據分頁數目將所有待導出的數據劃分為對應的數據分頁。
在步驟s804中,導出模塊103依次將每個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,數據分頁中的每條數據對應預設數據文件中的一個數據行節點。
補充說明的是,所有待導出數據的數量可以是百萬級的數量,通過數據分頁將大量的數據劃分為適合導出的多個分頁數據,在導出過程中,通過依次將多個數據分頁導出,實現導出所有待導出數據的操作。進一步說明的是,預設數據文件為用戶選擇或者系統默認格式的文件,舉例來說,預設格式文件可以為微軟公司的excel文件。
舉例來說,瀏覽器客戶端輸入服務器10的導出條件是全省年齡在25歲至40歲的中年人資料,服務器10的查詢模塊101根據導出條件查詢全省所有年齡在25歲至40歲的中年人資料,假設計算出全省年齡25歲至40歲的中年人資料有300萬條。假設每個數據分頁中存儲的數據有2000條,服務器10的計算模塊1021根據每個數據分頁的數據量為2000個數據、和所有待導出的數據為300萬個數據,計算出待分頁的分頁數目為1500個。生成模塊1022根據分頁數目為1500個,將所有待導出的300萬數據劃分為1500個數據分頁。服務器10的導出模塊103依次導出1500個數據分頁,具體來說,將將第一個數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,其中,數據分頁中的一條數據對應預設數據文件中的一個數據行節點。將第1個數據分頁導出后,將第一個數據分頁所占內存清空。然后,依次導出第2個數據分頁,并將第2個數據分頁所占內存清空。直至導出第1500個數據分頁,將第1500個數據分頁所占內存清空。
本實施例提供的數據導出方法能根據導出條件查詢所有待導出的數據,并計算所有待導出數據的數量,將所有待導出數據劃分為多個數據分頁,將當前數據分頁中的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空。這樣,服數據導出方法能將大量待導出數據劃分為數據分頁,通過依次導出數據分頁實現大量數據的快速導出,提高導出大量數據的效率。
參閱圖9,圖9是本發明實施例八數據導出方法的流程圖。該方法應用于圖2-4所示的服務器10,下面對本實施例的數據導出方法進行詳細介紹。
在步驟s901中,檢測模塊106檢測內存中存儲的數據是否達到預設數目。
在步驟s902中,當內存中存儲的數據達到預設數目時,導出模塊103將內存中存儲的每條數據轉化成二進制流,并持久化到預設數據文件中,將已被導出數據所占的內存清空,其中,內存中存儲的每條數據對應預設數據文件中的一個數據行節點。
本實施例提供的數據導出方法能檢測存儲的數據是否達到了預設數目,當達到預設數目時,導出存儲的數據,將已被導出數據所占的內存清空,能實時導出大量數據、清空已被導出數據所占內存空間,實現大量數據的快速導出,提高導出大量數據的效率。
以上僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。