![](/img/trans.png)
[英]How to get Preparedstatement.executeBatch() to work for the good records if one record fails to insert
[英]Can INSERT and DELETE be added in one single executeBatch
我有數十萬行文本需要插入,而amang有幾百行應刪除。 文本文件如下所示:
i 01 ppp
i 02 vvv
i 45 bbb
...
d 05
i 09 mmm
i 21 jjj
....
“ i”表示插入,“ d”表示刪除DELETE,線的其余文本是需要處理的數據。
insert into t1 (id, name)values(?, ?);
delete from t1 where id = ?;
一次,我讀取了這些“ i”標題行和最后處理的“ d”標題行的1000行,addBatch()和executeBatch()。 我是否可以添加混合的插入並刪除批處理,然后執行它們?
謝謝。
您需要2個多行語句。
INSERT INTO t1 (id, name) VALUES (?, ?), (?, ?) ...;
DELETE FROM t1 WHERE id IN (?, ?, ...);
如果要原子操作,請鎖定表(語句取決於您的數據庫)
根據所討論的數據庫,您可以嘗試使用merge
語句
以Oracle的 Merge語句為例
MERGE INTO bonuses D
USING (SELECT employee_id, salary, department_id FROM employees
WHERE department_id = 80) S
ON (D.employee_id = S.employee_id)
WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
DELETE WHERE (S.salary > 8000)
WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
VALUES (S.employee_id, S.salary*0.1)
WHERE (S.salary <= 8000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.