Oracle批量插入資料insert all into用法

風靈使發表於2018-11-20

專案需要用到匯入excel表,並解析資料批量插入到oracle資料庫中。

1)直接解析excel,迴圈行,拼了sqlexecuteUpdate
執行一波…
咦,這效率很低啊,有多少行資料就執行了多少句sql,基本是一萬行已經接近一分鐘了。
2)每次都僅執行一條sql語句,時間是不是都花在建立連線放開連線balabala的過程上了,用executebatch批量執行sql語句試試。
沒有任何明顯的改善。
3)那改成一條insert語句效果怎麼樣呢?
這裡寫圖片描述在這裡插入圖片描述
這回效果看起來很明顯了,問題看起來要解決了,確實,按這樣改到程式裡,執行上傳excel,解析插入一萬行資料到資料庫,總共也就差不多一秒鐘,能接受了。

4)但是我還想相容Oracle,剛才是拿MySql做的實驗,Oracle竟然不能這麼寫:

insert into testimport(username,password,address,telphone,email)
values
('testname','jfksdfkdsfjksadljfkdsfjsdlafjdaslkfjasfd','山東省濟南市歷城區港興一路','19876767856','fdsfdsfads@163.com'),
('testname','jfksdfkdsfjksadljfkdsfjsdlafjdaslkfjasfd','山東省濟南市歷城區港興一路','19876767856','fdsfdsfads@164.com'),
('testname','jfksdfkdsfjksadljfkdsfjsdlafjdaslkfjasfd','山東省濟南市歷城區港興一路','19876767856','fdsfdsfads@165.com')

那我們在Oracle中,怎麼通過一個insert語句批量插入資料呢?

INSERT ALL 
INTO A(field_1,field_2) VALUES (value_1,value_2) 
INTO A(field_1,field_2) VALUES (value_3,value_4) 
INTO A(field_1,field_2) VALUES (value_5,value_6)
SELECT 1 FROM DUAL;

相關文章