티스토리 뷰
executeUpdate 로 쿼리를 실행했었는데 아시다 시피 건수가 많은 경우 오래 걸린다.
그래서 addBatch로 변경하려고 했다.
그런데 삽질을 좀 했다.. 이유가 뭐냐면..
기존에 쿼리 한개씩 실행하는 executeUpdate로 되어 있는 소스를 addBatch로 변경하려고 했다. (그냥 addBatch로 새로 개발했으면 이런 삽질은 없었을텐데..)
그런데 자꾸 1줄만 insert가 되는 것이였다.. 왜그러나 봤더니..
과거 executeUpdate 일 경우에는 prepareStatement가 많으면 에러가 났었다. 그래서
if(pstmt!=null) try{pstmt.close();}catch(SQLException e){};
이 코드를 넣었는데 이 코드 삭제를 하지 않았던 것이다.. 그래서 1줄만 insert가 되는 겨었다.
이제 본론으로 들어가면..
try{
String inSql=" INSERT INTO AA (a,b) VALUES(?,?) ";
BufferedReader in = new BufferedReader(new FileReader(pathFile));
int i=1; //0으로 하면 i%10000 == 이 처음 실행되기 때문에 1로 한다.
conn.setAutoCommit(false);
pstmt=conn.prepareStatement(insSql);
while((s=in.readLine())!=null){
pstmt.setString(1,"");
pstmt.setString(2,"");
pstmt.addBatch();
//계속 추가하면 outOfMemory 에러가 나기 때문에 10000개씩 executeBatch() 해줌.
if((i%10000)==0){
pstmt.executeBatch();
pstmt.clearParameters();
pstmt.clearBatch();
}
}
int[] rr=pstmt.executeBatch();
System.out.println("결과="+rr[0]);
conn.commit();
in.close();
}catch(Exception e){
conn.rollback();
}finnally{
if(stmt!=null) try{stmt.close();}catch(SQLException e){};
if(pstmt!=null) try{pstmt.close();}catch(SQLException e){};
if(conn!=null) try{conn.close();}catch(SQLException e){};
}
근데 conn.commit()을 안해도 테이블에 데이타가 들어갔다..
'자바(Java)' 카테고리의 다른 글
자바 배치 실행시 - 오류: 기본 클래스 test.W을(를) 찾거나 로드할 수 없습니다 (0) | 2017.09.05 |
---|---|
자바 클래스패스 설정 방법 - 오류: 기본 클래스을 찾거나 로드할 수 없습니다. (0) | 2017.08.31 |
[Tomcat] 톰캣 startup bat 재시작 배치파일 만들기 (0) | 2017.08.08 |
java에서 외부 프로세스 실행 processbuilder 및 결과 exitvalue 얻는 방법 (0) | 2017.08.02 |
자바 암호화 - javax.crypto.BadPaddingException: Given final block not properly padded (0) | 2017.07.18 |
- Total
- Today
- Yesterday
- xe addon
- EC
- webix
- 오라클
- ocjap
- esql
- php
- proc
- xe애드온
- 파이썬
- KG
- XE3
- 이클립스
- 문자열
- 스크래핑
- C
- 프로씨
- 자바
- ocajp
- Python
- JDBC
- 포인터
- 라이믹스 모듈
- 인포믹스
- 플러터
- XE
- C언어
- MySQL
- 파싱
- 자바 smtp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |