溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle數(shù)據(jù)庫批量數(shù)據(jù)導(dǎo)出工具開發(fā)

發(fā)布時間:2020-08-05 19:58:37 來源:網(wǎng)絡(luò) 閱讀:2917 作者:hjblx 欄目:軟件技術(shù)

Oracle數(shù)據(jù)庫批量數(shù)據(jù)導(dǎo)出工具開發(fā)

需求

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

  1. 編寫SQL查詢結(jié)果

Oracle數(shù)據(jù)庫批量數(shù)據(jù)導(dǎo)出工具開發(fā)

2.選擇導(dǎo)出Excel文件
Oracle數(shù)據(jù)庫批量數(shù)據(jù)導(dǎo)出工具開發(fā)

選擇導(dǎo)出Excel文件時可以選擇導(dǎo)出XLS、XLSX兩種格式的文件。

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

XLS文件最大行數(shù)是:65536
XLSX文件的最大行數(shù)是:1048576

基本構(gòu)想

使用任一編程語言連接數(shù)據(jù)庫并執(zhí)行SQL,將查詢結(jié)果分別寫入Excel文件。

存在兩種實現(xiàn)方案:

  1. 使用Java語言連接數(shù)據(jù)庫,使用POI庫寫Excel文件
  2. 使用C/C++語言開發(fā)桌面程序,使用其他庫寫Excel文件

選擇過程:
考慮到工具會提供公司內(nèi)部其他同事使用,加之對Java做界面不是很了解,故放棄此方案1,采用方案2。選定使用方案2后,著手選擇可使用的庫及相關(guān)技術(shù)。

關(guān)于存儲文件的選擇
直接寫Excel文件:寫Excel文件時,使用LibXl庫,當數(shù)據(jù)量比較大的時候,會出現(xiàn)存盤失敗的情況,此種情況下只能減少寫入Excel文件的行數(shù)。如果查詢結(jié)果的字段很多,長度很長的情況下,此種方案可保存的數(shù)據(jù)條數(shù)更少。

寫Txt文件:
寫Csv文件:
寫Txt文件和寫Csv文件類似。區(qū)別在于寫Txt文件的時候,使用"\t"分隔不同的字段,而寫Csv格式時,使用","(逗號)進行分隔。
另外,在寫Csv和Txt格式的文件時,由于用戶可通過Excel打開則如果是數(shù)字,并且以0開頭的話,需要添加'號以標識此字段為文本。

其他內(nèi)容
選擇Duilib UI庫,沒有選擇MFC
選擇OCILib訪問和操作數(shù)據(jù)庫(希望可以專門寫一遍筆記記錄該庫的使用方法)
使用LibXl庫寫Excel文件

操作流程

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI