點評 ibatis+oracle 批量插入的三種方法.
< insert id =" insert_table " parameterClass ="java.util.List" >
<![CDATA[
insert into sj_test( col1 , col2 , col3 ) values
]]>
< iterate conjunction ="," >
<![CDATA[
(#test[]. col1 #, # test []. col2 #, # test []. col3 #)
]]>
</ iterate >
</ insert >
這種方式是網上最常見的,但是也是問題最大的, 今天把我徹底糾結了,弄了幾個小時,最後發現, Oracle不支援 一個insert多個values的方式, 不知道網友們被坑到了沒,好像MySQL支援這種 方式 所報的錯誤:ORA-00933:SQL命令未正確結束
第二種
<insert id="insert_table " parameterClass="java.util.List">
insert all
<iterate conjunction="">
into sj_test( col1 , col2 , col3 ) values
(#test[]. col1 #, # test []. col2 #, # test []. col3 #)
</iterate>
<!--必須要加上 -->
select * from dual
</insert>
這種方式,Oracle支援,其他的資料庫就不知道支不支援,但是這種方式有個侷限性,就是你插入的表的列數* 你插入的行數 <1000 才有效
如:
我今天需要插入的表有13列欄位,總共需要插入246行,在執行的時候,他就報:ORA-24335 cannot support more than 1000 columns
第三種方式
<insert id="insert_table" parameterClass="java.util.List">
insert into
sj_test( col1 , col2 , col3 ) values select
col1 , col2 , col3
from (
<iterate conjunction=" union all ">
select
#test[].col1# as
col1 , #test []. col2# as
col2, # test[].col3# as
col3 from dual
</iterate>
)
</insert>
這種方式 是先將List裡面的值,迴圈拼接成一個查詢虛擬表,然後再通過查詢虛擬表,獲取每一行的資料 插入到你需要插入的表裡面去. 這樣的話有個需要注意的地方,就是你拼接的SQL語句的長度有沒有超過Oracle的最大長度,不過Oracle的最大長度是64KB,你的SQL語句應該不會寫這麼長吧?
相關文章
- 【MyBatis】幾種批量插入效率的比較MyBatis
- 插入大量資料速度慢的解決方法:批量插入
- 全面分析插入排序的三種插入方式排序
- SQL Server 2005中插入XML資料的三種方法SQLServerXML
- Spring Data JPA中實現更新插入三種方法Spring
- Mybatis批量更新三種方式MyBatis
- mybatis插入資料、批量插入資料MyBatis
- DataTable資料批量寫入資料庫三種方法比較資料庫
- ADO.Net的批量插入
- oracle批量插入資料Oracle
- MyBatis 批量插入資料MyBatis
- Mybatis批量插入Oracle、MySQLMyBatisOracleMySql
- MongoDB不支援批量插入MongoDB
- MongoDB批量插入大資料文件的簡單方法一例MongoDB大資料
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- C語言:排列陣列的三種方法:冒泡法、選擇法、插入法C語言陣列
- 點選一列顯示其index的三種方法Index
- .net Excel 批量插入效能慢Excel
- MySql避免重複插入記錄的幾種方法MySql
- 018-html插入樣式的三種方式HTML
- ibatis對oracle資料庫的批量更新和批量插入的操作BATOracle資料庫
- 批量插入資料的儲存過程儲存過程
- insert批量插入優化方案優化
- 使用PrepareStatement實現批量插入操作REST
- 使用MySqlBulkLoader批量插入資料MySql
- hibernateHQl批量插入、刪除、更新
- 大表資料插入批量提交
- 海量資料處理_批量插入
- SQL語句批量插入資料SQL
- SqlBulkCopy 複製批量插入資料SQL
- LINUX 使用批量刪除檔案的幾種方法Linux
- 批量殺死MySQL連線的幾種方法詳解MySql
- 「有點收穫」三種基本方法建立執行緒執行緒
- 美股評論:蘋果墜落的三種可能蘋果
- MySql插入唯一鍵衝突的三種可選方式MySql
- Go 中的三種排序方法Go排序
- js解析url的三種方法JS