Using PreparedStatement batch
1. Create DB connection.
2. Create query for prepared statement.
3. setAutoCommit false.
4. Prepare stamen and add it to batch.
5. If batch size is multiple of 2000 then commit the database.
6. Repeat step 4 and 5 till the complete data is loaded.
7. close connection.
public static intuploadFilesData(List<CallDetailDTO> list) {
connection = getConnection();
String query = Constants.INSERT_PREFIX + Constants.TABLE_ROWS + Constants.PREPARED_STMT_VALUE;
int count = 0;
try {
connection.setAutoCommit(false);
PreparedStatement ps = connection.prepareStatement(query);
for (CallDetailDTO dto: list) {
ps.setString (1,dto.getPartyNumberA());
ps.setString (2,dto.getPartyNumberB());
ps.setString (3,dto.getCallDate());
ps.setString (4,dto.getCallTime());
ps.setString (5,dto.getDuration());
ps.setString (6,dto.getCellId());
ps.setString (7,dto.getLastCellId());
ps.setString (8,dto.getCallType());
ps.setString (9,dto.getImei());
ps.setString (10,dto.getImsi());
ps.setString (11,dto.getPpPo());
ps.setString (12,dto.getSmsCentre());
ps.setString (13,dto.getRoamingNwCied());
ps.setString (14,dto.getSheetName());
ps.addBatch();
if(++count % Constants.BATCH_SIZE == 0) {
ps.executeBatch();
connection.commit();
}
}
ps.executeBatch();
connection.commit();
ps.close();
connection.close();
} catch (SQLException e) {
System.out.println("SQLException:"+e.getMessage());
}
return count;
}
No comments:
Post a Comment