I am using Oracle Database 12c with oracle.jdbc.driver.OracleDriver.
How batch insert is working? I know that is grouping statements, but what exactly if happening during preparedStatement.executeBatch? Is it executing only 1 insert per batch?
What approach for executing batches is better. This one with execute outside loop:
PreparedStatement ps = c.prepareStatement("insert into some_tab(id, val) values (?, ?);");
for (int i = 0; i < 3000; i++) {
ps.setLong(1, i);
ps.setString(2, "value" + i);
if ((i + 1) % 3 == 0) {
ps.addBatch();
}
}
ps.executeBatch();
Or this - with execution in loop:
PreparedStatement ps = c.prepareStatement("insert into some_tab(id, val) values (?, ?);");
for (int i = 0; i < 3000; i++) {
ps.setLong(1, i);
ps.setString(2, "value" + i);
ps.addBatch();
if ((i + 1) % 3 == 0) {
ps.executeBatch();
}
}
ps.executeBatch();