1. 程式人生 > >Oracle數據庫批量數據導出工具開發

Oracle數據庫批量數據導出工具開發

Oracle 導出 工具 批量

Oracle數據庫批量數據導出工具開發

需求

最近工作中遇到一個需求,用戶頻繁要求從後臺批量導出大量數據。目前的導出方式是使用PL/SQL Developer工具連接Oracle數據庫,編寫SQL語句,使用PL/SQL Developer工具自帶的導出Excel文件的功能進行導出。

  1. 編寫SQL查詢結果

技術分享圖片

2.選擇導出Excel文件
技術分享圖片

選擇導出Excel文件時可以選擇導出XLS、XLSX兩種格式的文件。

遇到的問題:
當用戶要求導出的數據條數太大,超過XLS或者XLSX兩種文件可以存儲的最大行數時即導出失敗。為解決此問題,特定開發Oracle數據導出工具,用以支持大批量數據的導出工作。

XLS文件最大行數是:65536

XLSX文件的最大行數是:1048576

基本構想

使用任一編程語言連接數據庫並執行SQL,將查詢結果分別寫入Excel文件。

存在兩種實現方案:

  1. 使用Java語言連接數據庫,使用POI庫寫Excel文件
  2. 使用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數據庫批量數據導出工具開發