【发布时间】:2016-10-09 19:41:51
【问题描述】:
我有一个 java 程序,可以将数千行数据从文本文件读取到数据库中。它使用语句批处理来一次插入几千行。
如果行中的任何行未能更新,我会继续尝试其余的行,直到列表末尾。之后,我返回并检查哪些行失败,然后将这些行中的信息打印到日志文件以供稍后检查。
我想知道如果由于重复条目而失败,是否有办法跳过打印失败的行。重复失败我很好,但如果由于其他原因插入失败,我需要将该行输出到我的日志文件。
我目前这样做的方式是:
int[] updateCounts;
try {
// Do my batch updates by iterating through a vector of data
} catch (BatchUpdateException buE) {
updateCounts = buE.getUpdateCounts();
}
for (int c = 0; c < updateCounts.length; ++c) {
if (updateCounts[c] == Statement.EXECUTE_FAILED) {
// Print data from the original data vector at index c
}
}
我不想打印 updateCounts 为 EXECUTE_FAILED 的每一行,我只想打印那些因为唯一键而没有的行。
在 Google、StackOverflow 和 BatchUpdateException 的文档之间,我猜没有办法做到这一点。但是如果有就更好了,我就是找不到。
【问题讨论】:
标签: java mysql sql jdbc batch-updates