Проблема пакетного обновления JDBC

У меня есть немного уникальное требование к API Java-JDBC вместе с базой данных Oracle. У меня есть autoCommit по умолчанию, что верно для Oracle, и я использую пример, подобный этомуссылка.

Тем не менее, когда я добавляю, скажем, 1000 пакетов и, скажем, каждая из них является вставками. И давайте предположим, что около 20 записей нарушили некоторые ограничения, я хочу, чтобы оставшиеся 980 перешли в COMMITTED (и впредь были видимы для любых других запросов, использующих любое другое соединение) в базу данных и проигнорировали 20 записей. В приведенном выше примере, когда одна строка нарушает любую транзакцию, тодаже когда я фиксирую в блоке catch транзакция фиксируется только до первого сбоя.

Я знаю, что пакетные обновления должны выполняться ТОЛЬКО, когда вы уверены, что все строки пройдут, а обработка исключений не одна, но я планирую ПАТЧИРОВАТЬ существующую базу данных, так что какие-то "плохие практики" в порядке :). Любые примеры кода будут быть высоко оценен.

**** ПОДРОБНЕЕ ****

Использование простой вставки / обновления не подходит, так как я обрабатываю около 3 миллионов строк, поэтому я собираю данные по 1000 записей. Простое добавление 1000 вставок в цикле (без учета исключений) занимает гораздо больше времени (около 5 секунд на каждые 1000 записей), в отличие от пакетного обновления <300 мс.

Проблема: При работе с базой данных Oracle драйвер, по-видимому, останавливается при первом сбое, т. Е. Когда 1000 строк упакованы, а 100-я вышла из строя, я хочу, чтобы он продолжался до 1000-й строки. Я думаю, что это не может быть сделано в JDBC (с Oracle) Какссылка указывает, что только несколько баз данных поддерживают такую функцию, и, вероятно, Oracle не один

Ответы на вопрос(7)

Ваш ответ на вопрос