Как получить записи не удалось во время пакетной обработки JDBC

0

Я выполняю набор операторов SQL через пакетную обработку JDBC. Как получить записи не удалось во время пакетной обработки.

Я могу получить рекорд успеха и количество неудач. Но не в состоянии получить ошибочные записи.

Statement statement = null;
try {
    statement = connection.createStatement();
    for (String insertQuery : insertQuerys) {
            statement.addBatch(insertQuery);
    }
    statement.executeBatch();
} catch (Exception e) {
    logger.info("Error : " + e);
} finally {
    try {
        statement.close();
    } catch (SQLException e1) {
        logger.info("Error : " + e1);
    }
}

Я ожидаю, что записи, которые потерпели неудачу во время пакетной обработки JDBC.

  • 0
    Что вы имеете в виду под the failed record ? Когда SQL / оператор / запрос не выполняется, он возвращает только ошибку, без records . Вы можете только сам оператор / запрос sql, который не удался.
Теги:
jdbc

1 ответ

0

Вы можете перехватить BatchUpdateException которого есть метод int[] getUpdateCounts() который возвращает массив из числа строк, затронутых каждым пакетным оператором, в том порядке, в котором они были добавлены в пакет.

Но здесь важно то, что если ваш отдельный пакетный оператор обновляет более одной строки, вы не можете точно сказать, какие строки были затронуты оператором и существуют ли они даже в таблице (в случае операторов вставки или слияния).

  • 0
    Помните, что драйверы могут либо остановиться при первом сбое, либо продолжить выполнение. В зависимости от этой обработки ошибок, счетчики обновлений либо содержат счетчики обновлений успешно выполненных операторов до оператора с ошибками, либо содержат счетчики обновлений для всех операторов в пакете со значением Statement.EXECUTE_FAILED для операторов, которые не удалось выполнить. И в зависимости от режима транзакции и поведения драйвера (автоматическая фиксация, прерывание транзакции и т. Д.) Любой сбой может вернуть все, включая успешно выполненные операторы).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню