簡體   English   中英

可以在單個executeBatch中添加INSERT和DELETE

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM