台灣最大程式設計社群網站
線上人數
640
 
會員總數:245463
討論主題:189220
歡迎您免費加入會員
討論區列表 >> Java >> 使用executeBatch大量insert data,若遇到一筆失敗
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
使用executeBatch大量insert data,若遇到一筆失敗
價值 : 50 QP  點閱數:1335 回應數:3

樓主

vans
門外漢
0 22
615 21
發送站內信

各位先進大家好,如標題
小弟使用executeBatch來大量INSERT資料(oracle)
一次約一萬筆,假設這一萬筆資料內有一筆資料會遇到PK值重複 無法INSERT
但我不清楚是哪一筆重複,若不要一筆一筆先SELECT看是否重複再INSERT
直接使用executeBatch來INSERT

若遇到該情況,其他9999筆資料會INSERT成功嗎?
或是遇到一筆失敗,其他9999筆也跟著失敗?





搜尋相關Tags的文章: [ executeBatch ] , [ oracle ] , [ insert ] , [ 大量 ] ,
本篇文章發表於2016-05-30 09:27
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

vans
檢舉此回應
來自己解答,看來其中一筆失敗
接下來的語法也會跟著失敗無法INSERT..
本篇文章回覆於2016-05-30 10:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Silent
檢舉此回應
不知道你有沒有用過Hibernate 工具
Hibernate 裡面有個發法 saveOrUpdate()
可以不必自己判斷資料存不存在
Hibernate 會幫你判斷 不存在執行save 存在執行update
在insert的時候 就不會遇到 PK重複 的錯誤

本篇文章回覆於2016-06-24 16:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

etman
檢舉此回應
這個跟 JDBC driver 實作高度相關,要看看 Oracle 的文件
如果 Oracle 有實作正確的話,executeBatch 傳回的 int[] 會有跟你 addBatch 一樣次數的 return code,而且順序跟 addBatch 也一樣,所以假設第3筆有問題,那回來的 int[2] 就會是有問題的 return code
FYI: https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeBatch()
本篇文章回覆於2016-12-03 23:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.