jdbc - JDBC 批量插入异常处理以了解特定的失败记录
问题描述
我想在java程序中读取一个包含oracle插入语句的txt文件并作为批处理执行,如果批处理中的任何记录失败,我如何知道特定的插入语句只失败了。
例如,如果我在文件中有 1000 条记录并且 659 条记录在插入时失败,我如何知道 659 条记录在执行批量更新中失败。是否有任何其他过程可以做到这一点,请告诉我。
解决方案
有两种方法可以处理上述情况,要么签入 Java 代码,要么编写程序
Java 代码:这将加载所有内容或回滚整个批次。
updateResult =preparedStatement.executeBatch(); checkSuccessfulUpdates(updateResult);
public static void checkSuccessfulUpdates(int[] updateCounts) throws Exception { for (int i :updateCounts) { if (i == Statement.EXECUTE_FAILED) { throw new Exception("并非所有行都已更新。回滚整个批次"); } } }
编写 SQL 过程
将自定义对象中的全部数据发送到过程中,按记录逐个加载,在循环内处理异常,错误时将失败记录加载到临时表中。
推荐阅读
- python - 循环中的多个图 - 底图python
- javascript - 反应原生地图可拖动标记onDragEnd位置?
- gateway - Thingsboard Gateway SigFox - 消息未到达
- excel - VBA Excel值显示为整数,而为文本
- python - conda 破坏了 dnf、yum、yum 已弃用;我都试过了:重新安装了 dnf、python 等 Fedora 29
- java - 如何为 Steam 准备安装 Java 应用程序?
- java - android:将大字符串转换为字节并通过网络发送是否安全?
- javascript - flask/jinja 向 javascript 发送一个数组
- python - 如何从列等于值的数据框中制作切片
- wordpress - PHPMailer clearAllRecipients() 在 Wordpress 中不起作用