我有一个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的每一行,而只是因为一个唯一的密钥而打印出AREN&#39; T的那一行。
在Google,StackOverflow和BatchUpdateException的文档之间,我猜测没有办法做到这一点。但是,如果存在并且我无法找到它,它会很好。
答案 0 :(得分:0)
可能有两个原因;
当您从文本文件中读取数据时,我建议您在SQL中使用Load Data Local InFile
查询。这将解决上述两个问题,并且所有正版条目都将上传到数据库中。
如果这没有帮助,请将查询添加到您的问题中,堆栈跟踪将有助于回答。