1. 程式人生 > >Oracle 批量插入資料 insert all into 用法

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

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

1)直接解析excel,迴圈行,拼了sql,executeUpdate。
執行一波…
咦,這效率很低啊,有多少行資料就執行了多少句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','[email protected]'),
('testname','jfksdfkdsfjksadljfkdsfjsdlafjdaslkfjasfd','山東省濟南市歷城區港興一路','19876767856','[email protected]'),
('testname'
,'jfksdfkdsfjksadljfkdsfjsdlafjdaslkfjasfd','山東省濟南市歷城區港興一路','19876767856','[email protected]')

那我們在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;