Обработка исключений в пакетной вставке JDBC для определения конкретной ошибочной записи - PullRequest
0 голосов
/ 28 мая 2018

Я хочу прочитать текстовый файл, в котором есть операторы вставки оракула в java-программе, и выполнить как пакет, если какая-либо из записей потерпела неудачу в пакете, как узнать, что конкретный оператор вставки только потерпел неудачу.

для Ex.if, если у меня есть 1000 записей в файле и 659 записей не удалось вставить, как я могу узнать, что 659 записей не удалось в обновлении executebatch. Если есть какой-либо другой процесс, чтобы сделать это, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 28 мая 2018

Существует два способа решения вышеуказанной ситуации: либо вы проверяете код Java, либо пишете процедуру

  1. Код Java: это либо загрузит все, либо откатит весь пакет.

    updateResult = prepareStatement.executeBatch ();checkSuccessfulUpdates (updateResult);

    public static void checkSuccessfulUpdates (int [] updateCounts) выдает исключение {for (int i: updateCounts) {if (i == Statement.EXECUTE_FAILED) {throw new Exception ("Не все строкибыли обновлены. Откатив всю партию ");}}}

  2. Написать процедуру SQL

Отправить все данные в пользовательском объекте в процедуру, загрузить ее 1 на 1 по записи,обработать исключение в цикле, при ошибке загрузить ошибочную запись во временную таблицу.

...