1. 程式人生 > >從PL/SQL匯出大量資料到Excel的方法。

從PL/SQL匯出大量資料到Excel的方法。

方法一:

1.在PLSQL中的SQL視窗執行查詢程式碼,因為是大量資料,所以SQL執行時間應該會比較長,此時在執行過程中點選中斷按鈕,資料結果不會顯示,但會顯示結果視窗。(此時千萬別將資料載入完後-全選-右鍵-匯出結果為excel檔案,因為excel表格有最大行數限制,限制為1048576行,若要匯出的資料量大於最大行數,則會在匯出到1048576行時候報錯,而且在plsql中載入大量資料非常費時,匯出會佔用大量電腦執行記憶體,實測時140多萬行的資料,載入完全選匯出為excel時將電腦執行記憶體佔滿,且最後還會報錯,浪費了不少時間。)


2.在結果視窗中點選下圖所框出的按鈕,並選擇匯出為csv檔案。匯出時間與資料量大小和網速有關。(選擇csv檔案是因為該格式支援超過百萬行的資料,且可以用文字編輯器進行編輯,並且最後能用excel開啟)。


3.在csv檔案匯出完成後,使用文字編輯器開啟該檔案。(如notepad++)將資料分成小於excel最大行數的兩部分,實驗時我在文字編輯器中將140W條資料按行數分成了80W前和80W後的兩部分資料。分別儲存為1.csv和2.csv

4.新建excel檔案,在工具欄中點選 資料-自文字 ,選擇1.csv,點選匯入


按下圖方法設定3步



第三步中若資料裡包含了很長的數字型別,若轉到excel中會變成科學計數法且最後幾位變為0,需要在下方的“資料預覽”中選擇該欄位,然後將列資料格式選擇為文字。其餘欄位的格式請按需選擇。


設定完畢後耐心等待,excel會載入資料,在後臺數據轉換時還會有比較高的CPU佔用。

完畢後另存為excel檔案即可,此時1.csv檔案的資料已儲存為excel格式。在該excel中新建一個sheet頁,按照上述步驟可將2.csv檔案匯入,最後儲存。

此時任務完成,將140萬行資料分為了2個sheet頁儲存在了excel檔案中。

方法二:

在SQL中做文章,在要匯出資料的SQL中欄位裡增加一列rownum,外部巢狀一層select*將資料按條數來分開。

按取數場景選擇資料的分法,測試時的資料像這樣:

但是仔細看該SQL,取的是3月份的資料,然後按資料量來分開。如果對資料分段條數沒有特別嚴格的要求,可以將按table裡面的date來區分,這樣會減少資料庫的壓力。

如分成這樣兩條,前半月和後半月的資料。


這樣一來若是table與很多其他表有關聯的話,資料庫壓力會小很多,而且也能夠選擇直接匯出成excel。

(好比兩條SQL,每個主表70W條,執行2次;一條SQL資料140W條執行2次,再分成前70W和後70W)

下圖是執行開銷

按主表時間片段分


按總結果條數分