Как получить записи не удалось во время пакетной обработки JDBC - PullRequest
0 голосов
/ 28 марта 2019

Я выполняю набор операторов 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.

1 Ответ

1 голос
/ 28 марта 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...