有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从BatchUpdateException确定每行执行失败的原因

我有一个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执行失败的每一行,只想打印那些不是因为唯一键而失败的行

在Google、StackOverflow和BatchUpdateException的文档之间,我猜没有办法做到这一点。但如果有,那就太好了,我就是找不到


共 (1) 个答案

  1. # 1 楼答案

    可能有两个原因

    1. SQL查询中可能存在语法错误
    2. 主键可能有重复的条目

    当您从文本文件读取数据时,我建议您使用SQL中的Load Data Local InFile查询。这将解决上述两个问题,您所有的真实条目都将上传到数据库中

    如果这没有帮助,请将查询添加到您的问题中,堆栈跟踪将有助于回答