JDBC Batch Update Problema

Tengo un requisito ligeramente único con la API Java-JDBC junto con la base de datos Oracle. Tengo autocommitir como predeterminado, lo cual es cierto para Oracle y estoy usando el ejemplo similar a esteenlac.

Sin embargo, cuando agrego digamos 1000 lotes y digamos que cada uno de ellos son insertos. Y supongamos que unos 20 registros violaron algunas restricciones, quiero que los 980 restantes se COMPROMETAN (y en adelante sean visibles para cualquier otra consulta que use cualquier otra conexión) a la base de datos e ignoren los 20 registros. En el ejemplo anterior, cuando una fila viola cualquier transacción, entoncesincluso cuando me comprometo en el bloque catch, la transacción solo se confirma hasta el primer error.

Sé que las actualizaciones por lotes SOLO se realizarán cuando esté bastante seguro de que todas las filas pasarán y el procesamiento de excepciones no es uno, pero estoy planeando PARCHEAR una base de datos existente, por lo que algún tipo de "malas prácticas" está bien :) Cualquier muestra de código será muy apreciado.

**** MÁS DETALLES ***

Usar la inserción / actualización simple no está bien, ya que estoy procesando cerca de 3M filas, así que estoy procesando cada 1000 registros. Simplemente agregar 1000 inserciones en el bucle (ignorando las excepciones) lleva mucho más tiempo (aproximadamente 5 segundos por cada 1000 registros) en lugar de la actualización por lotes <300 ms.

Problema: con la base de datos Oracle, el controlador parece detenerse en el primer FALLO, es decir, cuando se agrupan 1000 filas y se produce el error 100, quiero que continúe hasta la fila 1000. Creo que esto no se puede hacer en JDBC (con Oracle) Al igual que elenlac indica que solo unas pocas bases de datos soportan dicha característica y probablemente Oracle no es una

Respuestas a la pregunta(14)

Su respuesta a la pregunta