Oracle 批量插入資料 insert all into 用法
阿新 • • 發佈:2019-01-08
專案需要用到匯入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;