最近需要將大量xml資料經過轉換存在oracle資料庫中,因為有大量的資料,所以採用批量操作,至於優點相信你在看的時候已經大概諒解了,具體操作我就分步驟說明一下,希望對你有幫助。
為了避免資料庫欄位過多給讀者造成閱讀負擔,只在資料庫中建立乙個擁有乙個主鍵和兩個欄位的表
一 ,批量插入如果主鍵重複主鍵不變根據主鍵更新,不重複的資料直接插入
表中資料
sql如下 :
merge into users t
using (
select # as id,
# as name,
# as age
from dual
) t1
on (t1.id = t.id)
when matched then
update set t.name = t1.name,
t.age = t1.age
when not matched then
insert
(id, name, age)
values (t1.id,t1.name,t1.age)
測試方法
執行結果分析,主鍵從5開始以前資料為中國,100。 現在插入日本,5條會被覆蓋,沒有的直接插入
二 ,批量插入不考慮主鍵重複,如果重複報主鍵衝突錯誤,否則全部插入。(我們專案採用這種方式,因為不考慮主鍵重複問題,使用的是oracle系統主鍵永遠不會重複)
insert into users ( id, name, age )
(select #, #, # from dual )
三 ,單條資料主鍵重複的情況下,直接根據主鍵更新資料
原資料:
sql 語句:
merge into users t
using (
select # as id, # as name, # as age from dual) t1
on (t1.id = t.id)
when matched then
update set t.name = t1.name, t.age = t1.age
when not matched then
insert (id, name, age) values (t1.id,t1.name,t1.age)
測試類:
結果:
oracle應用之使用sequence批量寫資料
本部落格是對之前寫的部落格oracle批量新增更新資料的補充,oracle的知識真是多,其實要學精任何一門知識都是要花大量時間的,正所謂 學如逆水行舟,不進則退 先介紹oracle sequence的一些知識,sequence顧名思義,就是建立乙個序列,這個序列沒調一次就會自動加,利用它這個特性,我...
MyBatis原始碼分析(三)批量更新
主要是org.apache.ibatis.executor.batchexecutor這個類,此類繼承baseexecutor 基本增刪改查,快取,懶載入處理 batchexecutor這個類有四個屬性 批處理更新最大返回結果 public static final int batch update...
mybatis原始碼閱讀之9 批量插入資料
在做專案的工程中,遇到過各種mybatis批量插入資料的需求。在各種水平的架構師提供的框架封裝中,也出現了好幾種對批量處理的不同封裝。根據我看過的 大致可以分三種情況。autowired for entertypedo d list 這是一種完全不負責任的做法,資料量大到一定級別時,插入很慢,而且可...