標籤:Oracle 匯出 工具 批量
Oracle資料庫批量資料匯出工具開發
需求
最近工作中遇到一個需求,使用者頻繁要求從後台大量匯出大量資料。目前的匯出方式是使用PL/SQL Developer工具串連Oracle資料庫,編寫SQL語句,使用PL/SQL Developer工具內建的匯出Excel檔案的功能進行匯出。
- 編寫SQL查詢結果
2.選擇匯出Excel檔案
選擇匯出Excel檔案時可以選擇匯出XLS、XLSX兩種格式的檔案。
遇到的問題:
當使用者要求匯出的資料條數太大,超過XLS或者XLSX兩種檔案可以儲存的最大行數時即匯出失敗。為解決此問題,特定開發Oracle資料匯出工具,用以支援大批量資料的匯出工作。
XLS檔案最大行數是:65536
XLSX檔案的最大行數是:1048576
基本構想
使用任一程式設計語言串連資料庫並執行SQL,將查詢結果分別寫入Excel檔案。
存在兩種實現方案:
- 使用Java語言串連資料庫,使用POI庫寫Excel檔案
- 使用C/C++語言開發傳統型程式,使用其他庫寫Excel檔案
選擇過程:
考慮到工具會提供公司內部其他同事使用,加之對Java做介面不是很瞭解,故放棄此方案1,採用方案2。選定使用方式情節2後,著手選擇可使用的庫及相關技術。
關於隱藏檔的選擇
直接寫Excel檔案:寫Excel檔案時,使用LibXl庫,當資料量比較大的時候,會出現存檔失敗的情況,此種情況下只能減少寫入Excel檔案的行數。如果查詢結果的欄位很多,長度很長的情況下,此種方案可儲存的資料條數更少。
寫Txt檔案:
寫Csv檔案:
寫Txt檔案和寫Csv檔案類似。區別在於寫Txt檔案的時候,使用"\t"分隔不同的欄位,而寫Csv格式時,使用","(逗號)進行分隔。
另外,在寫Csv和Txt格式的檔案時,由於使用者可通過Excel開啟則如果是數字,並且以0開頭的話,需要添加‘號以標識此欄位為文本。
其他內容
選擇Duilib UI庫,沒有選擇MFC
選擇OCILib訪問和操作資料庫(希望可以專門寫一遍筆記記錄該庫的使用方法)
使用LibXl庫寫Excel檔案
操作流程
Oracle資料庫批量資料匯出工具開發