Как найти ошибку SQL-оператора при выполнении в пакетном режиме - PullRequest
0 голосов
/ 22 апреля 2019

Я запускаю sql вставку как пакет

statement.executeBatch();

При сбое одной из нескольких строк генерируется исключение BatchUpdateExeception.

Я хочу знать, в какой строке произошел сбой.

Пример:

 Caused by: java.sql.BatchUpdateException: ORA-02291: integrity constraint (V500.XFK1Employee) violated - parent key not found

В этом случае EmployeeID не найден в родительской таблице,

Я вставляю 3 строки. Одна из них завершилась неудачно из-за ограничения внешнего ключа. Могу ли я узнать, какой EmployeeID не удалось вставить в SQL с помощью BatchUpdateException?

Это лишь небольшой пример. У меня есть 100 строк, которые выполняются как пакет

1 Ответ

0 голосов
/ 23 апреля 2019

Надеюсь, что ссылка поможет вам решить проблему - https://vladmihalcea.com/how-to-find-which-statement-failed-in-a-jdbc-batch-update/.

  1. Хороший способ регистрации операторов JDBC, а datasource-proxy является одним из лучших способов регистрации JDBC PreparedStatement (s)

  2. Нам также нужно перехватить BatchUpdateException и найти количество операторов, которые были успешно выполнены, вызвав метод getUpdateCounts

...