I need to insert many small rows rapidly into Oracle. (5 fields).
With MySQL, I break the inserts into groups of 100, then use one insert statement for every group o
try it,
public Boolean inserTable(String fileName) {
logger.info("Begin - " + this.getClass().getSimpleName() + "." + "inserTable");
logger.info("File : " + fileName);
try (Connection conn1 = jdbcTemplate.getDataSource().getConnection();) {
OracleConnection conn = ( OracleConnection ) conn1.getMetaData().getConnection();
ScriptRunner sr = new ScriptRunner(conn);
StringBuilder sBuffer = new StringBuilder();
StringBuffer sb=new StringBuffer();
String query = "Insert into TABLE_DATA (ID, DATA1, DATECREATED, CREATEDBY) Values ";
String line = "";
//Creating a reader object
BufferedReader br = new BufferedReader(new FileReader(fileName),1024 * 1024 );
while ((line = br.readLine()) != null) {
//logger.info("Leyo linea : " + line);
sb.append(query.concat("(").concat("TABLE_DATA_SQ.NEXTVAL,").concat(line.substring(0,6)).concat(",").concat("sysdate,").concat("'BDVENLINEA'").concat(");"));
sb.append("\n");
}
sb.append("commit;");
Reader reader = new StringReader(sb.toString());
//Running the script
sr.runScript(reader);
reader.close();
br.close();
return true;
} catch (FileNotFoundException e) {
logger.error(e.getMessage(), e);
throw new TechnicalException(e, e.getMessage());
} catch (SQLException e) {
e.printStackTrace();
throw new TechnicalException(e, e.getMessage());
} catch (IOException e) {
e.printStackTrace();
throw new TechnicalException(e, e.getMessage());
} finally {
logger.info("End - " + this.getClass().getSimpleName() + "." + "inserTable");
}
}