50만건이 넘는 데이타를 읽어서 insert 할 일이 생겼는데 보통의 방법으로 하니 톰켓이 계속 죽어 버리는 일이 생겼습니다.
자바 API를 보니 이러한 방법이 있더군요...
try {
StringBuffer query = new StringBuffer();
query.append("INSERT INTO ABT231 ");
query.append("(customer_no, item_cd, occur_amt, reason_cd, register_ymd, register_no) ");
query.append(" VALUES (?, ?, ?, '9', ?, ?) ");
conn = getConnection();
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(query.toString());
Iterator iter = m_abt231InsertList.iterator();
int count = 0;
while( iter.hasNext() ) {
m_abt231 = (Abt231) iter.next();
pstmt.setInt(1, m_abt231.getCustomerNo());
pstmt.setString(2, m_abt231.getItemCd());
pstmt.setLong(3, m_abt231.getOccurAmt());
pstmt.setString(4, s_magamCurrentTime);
pstmt.setInt(5, Integer.parseInt(s_workCd));
pstmt.addBatch();
count++;
if( (count % 10000) == 0){
System.out.println(count + "건 처리중");
pstmt.executeBatch();
}
}
pstmt.executeBatch();
conn.commit();
}