gpt4 book ai didi

java - 如果一条记录插入失败,如何让Preparedstatement.executeBatch() 为好记录工作

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:42 25 4
gpt4 key购买 nike

在我的java代码中,我有一个Prepared语句ps_temp。

PreparedStatement ps_temp;

// loop

ps_temp.setString(1,'abc');
....
....
ps_temp.addBatch();

// end loop

ps_temp.executeBatch();

现在批处理中的一条记录创建了唯一索引约束,最终导致整个 ps_temp.executeBatch() 失败。连批处理中的好记录都没有插入到表中。

那么,如果我的批处理有一些好的记录和一些坏的记录(这可能会导致完整性约束),那么是否有可能至少将好的记录插入到表中?

提前致谢!!诺曼

最佳答案

一批记录中包含少量坏记录的情况很常见。如果您尝试一次性插入所有记录,而其中一条记录失败,则整批插入都将被拒绝。这是预料之中的,也是“事务处理”的核心目的。

通常对于批量插入,您可以采取两种方法:

1)在每次记录插入后提交 --> 非常性能密集的过程。

2)将总记录分成更小的“ block ”并插入数据库。这样只有包含坏记录的 block 会失败,其他 block 将被插入到数据库中。

或者,如果您不想自己处理这些事情,可以选择框架。 Spring batch

在这种情况下可能是您的选择之一

关于java - 如果一条记录插入失败,如何让Preparedstatement.executeBatch() 为好记录工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23623187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com