Background Image
Java
2016.06.28 03:11

CUBRID에서 Java AddBatch 사용

조회 수 8339 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
대량 데이터를 저장하기 위해 자주 사용하는 AddBatch를 사용 합니다.
그러나 OutOfMemory가 발생 할 수 있으므로 적정하게 executeBatch()를 해줘야 합니다.

아래 간단한 예시( JAVA 소스 )

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class SelectAddBatchInsert {

   public static void main(String[] args) throws SQLException {

        Statement stmt = null;
        ResultSet rs = null;
        PreparedStatement pstmt = null;
        Connection conn = null;

       String url = "jdbc:CUBRID:localhost:33000:demodb:::";
       String userName = "dba";
       String passWord = "dba123";

        // Select Query
       StringBuffer sSql = new StringBuffer();
        sSql.append("   SELECT DISTINCT b.host_year as host_year, a.code as code, a.[name] as nm, to_char(b.game_date, 'YYYY-MM-DD') as game_dt  ");
        sSql.append("     FROM event a                              ");
        sSql.append("        , game b                               ");
        sSql.append("    WHERE a.code = b.event_code                ");

        // insert Query
        StringBuffer iSql = new StringBuffer();
        iSql.append(" INSERT INTO host_stat(host_year, code, [name], game_date, reg_sp) ");
        iSql.append(" VALUES( ?, ?, ?, cast(? as date), 'SelectAddBatchInsert') ");

        try {
            Class.forName("cubrid.jdbc.driver.CUBRIDDriver");
            conn = DriverManager.getConnection(url, userName, passWord);

            // I/F select
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sSql.toString());

            // Insert
            pstmt = conn.prepareStatement(iSql.toString());

            // Insert Count
            int Row_Count = 1;

            while(rs.next()) {

                String stHostYear    = rs.getString("host_year");
                String stCode    = rs.getString("code");
                String stNm    = rs.getString("nm");
                String stGameDt    = rs.getString("game_dt");

               pstmt.setString(1, stHostYear);
                pstmt.setString(2, stCode);
               pstmt.setString(3, stNm);
                pstmt.setString(4, stGameDt);

                // addBatch
                pstmt.addBatch();

                // Parameter Clear
                pstmt.clearParameters();

               // OutOfMemory : 1000 unit Commit
                if((rowCnt % 1000) == 0){
                    pstmt.executeBatch(); // Batch execute
                    pstmt.clearBatch(); // Batch Clear
                    conn.commit(); // connection commit
                }

                Row_Count++; 
            } // End While

            System.out.println("Insert Info Total Count : "+ (Row_Count- 1));   // Insert Total Count
            // Not Commit
            if ( Row_Count != 1 ){
                pstmt.executeBatch();
                conn.commit();
            }

            // connection close
            rs.close();
            conn.close();

            System.out.println(" SelectAddBatchInsert Info Total Count : "+ (rowCnt - 1));
        } catch ( Exception e ) {
            System.err.println(e.getMessage());
            e.printStackTrace();
        } finally {
            if ( rs != null ) rs.close();
            if ( stmt != null ) stmt.close();
            if ( pstmt != null ) pstmt.close();
            if ( conn != null ) conn.close();
        }
    }
}


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
106 기타 데이터 저장 구조와 테이블 재구성 file 손승일 2010.04.21 37489
105 PHP IIS에서 PHP, CUBRID 사용하기 file 남재우 2010.04.19 30311
104 기타 CUBRID 복제 구성하기 - 단일 서버에 구성 방법 포함 남재우 2010.03.08 30002
103 Windows 윈도우즈 환경에서 배치화일을 이용하여 백업 또는 데이터베이스 정리 수행하기 남재우 2010.03.03 27479
102 Linux CUBRID 복제 설계 가이드 file 정만영 2010.03.03 25138
101 Linux CUBRID 사용 포트와 iptables(방화벽) 설정 정만영 2010.03.01 38341
100 기타 자동증가 속성 사용 방법 및 주의 사항 남재우 2010.02.26 35661
99 기타 CUBRID 관련 유용한 기술 자료... 정병주 2010.02.19 33460
98 기타 Server HA 구성 시 CUBRID 설정과 방법 정만영 2010.02.03 21184
97 ODBC/OLEDB Vista_IIS_CUBRID_ASP연동 janus 2010.01.31 24553
96 Install CUBRID2008 R2.1 업그레이드시 serial 관련 문제 해결 방법 남재우 2010.01.28 27347
95 기타 CUBRID 데이터베이스와 연동하여 Qt어플리케이션 개발하기 - 2 3 김대진 2010.01.27 24541
94 기타 CUBRID 데이터베이스와 연동하여 Qt어플리케이션 개발하기 - 1 김대진 2010.01.14 32877
93 기타 CUBRID인덱스 구성 전략 웁쓰 2009.12.31 22193
92 기타 조인 방법(Join Method) 설명 file 웁쓰 2009.12.31 27990
91 기타 스칼라 서브쿼리 사용 가이드 웁쓰 2009.12.31 28268
90 Install CUBRID 에 텍스트큐브 설치하기 file inureyes 2009.12.31 29852
89 기타 독자적 테이블 사용되는 복제 재구성 file 손승일 2009.12.30 24173
88 Java SELECT ~ FOR UPDATE 대체 방법 손승일 2009.12.30 32367
87 기타 예제로 배우는 CUBRID 스터디 문학청년 2009.12.29 18546
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales