사용자 도구

사이트 도구


wiki:java:batch

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
wiki:java:batch [2020/05/07 17:31]
hylee 만듦
wiki:java:batch [2023/01/13 18:44] (현재)
줄 1: 줄 1:
-====== 메일_보내기 ======+====== Batch() ======
 <WRAP left notice 80%> <WRAP left notice 80%>
   * description :    * description : 
줄 16: 줄 16:
 <code java> <code java>
  
-// 수집한 데이터 조회 +public class RpCubridinsert 
-cllctVOs = dbUtil.getCllctSelectList(mode, sDate, eDate, runType); +
- +    --- 생략 --- 
-// 수집데이터 갯수 만큼 반복 +    List<RpCllctVO> cllctVOs = new ArrayList<>(); 
-for(RpCllctVO cllctVO: cllctVOs)                                                                                                                                             +    // 수집한 데이터 조회 
-{    +    cllctVOs = dbUtil.getCllctSelectList(mode, sDate, eDate, runType);
-    dbUtilCu.insertCllctCubridData(cllctVO);                                                                          +
-}                                                                                                                                                                           +
  
 +    // 수집데이터 갯수 만큼 반복
 +    for(RpCllctVO cllctVO: cllctVOs)                                                                                                                                            
 +    {   
 +        dbUtilCu.insertCllctCubridData(cllctVO);                                                                         
 +    }                                                                                                                                                                           
 +    --- 생략 ---
 +}
 public int insertCllctCubridData(RpCllctVO cllctVO) throws SQLException, UnsupportedEncodingException public int insertCllctCubridData(RpCllctVO cllctVO) throws SQLException, UnsupportedEncodingException
 { {
줄 38: 줄 43:
             + " BBS_ID      "             + " BBS_ID      "
             + " ,SEQ        "             + " ,SEQ        "
-            + " ,등등 생략       "+            + "     -- 등등 생략 --      "
             + " )                 "             + " )                 "
             + " VALUES          "             + " VALUES          "
줄 44: 줄 49:
             + " 'news-media'    "             + " 'news-media'    "
             + " ,?              "             + " ,?              "
-            + " ,등등 생략       "+            + "     -- 등등 생략 --      "
             + "                       ";             + "                       ";
  
줄 52: 줄 57:
  
         pstmt.setInt(1,    cllctVO.getBitnaraSeq());         pstmt.setInt(1,    cllctVO.getBitnaraSeq());
-        등등 생략+                     -- 등등 생략 --
  
         ret = pstmt.executeUpdate();         ret = pstmt.executeUpdate();
줄 69: 줄 74:
 <code java> <code java>
  
 +public class RpCubridinsert
 +{
 +    --- 생략 ---
 +    List<RpCllctVO> cllctVOs = new ArrayList<>();
 +    // 수집한 데이터 조회
 +    cllctVOs = dbUtil.getCllctSelectList(mode, sDate, eDate, runType);
  
 +    // cllctVOs 수집 List 데이터를 가지고 
 +    // insert 모듈 호출
 +    dbUtilCu.insertCllctCubridData(cllctVOs);                                                                                                                                                                                                                                           
 +    --- 생략 ---
 +}
  
 +// 수집한 데이터 조회
 +cllctVOs = dbUtil.getCllctSelectList(mode, sDate, eDate, runType);
  
 +dbUtilCu.cllctBatchData(cllctVOs);
 +
 +public int insertCllctCubridData(RpCllctVO cllctVO) throws SQLException, UnsupportedEncodingException
 +{
 +    DBManagerCu dbm = DBManagerCu.getInstanceCu();
 +    Connection conn = dbm.getConnection();
 +
 +    PreparedStatement pstmt = null;
 +    int ret = 0;
 +    String sqlText;
 +
 +    sqlText = " INSERT INTO TB_INSEQCMS_BBS_DATA "
 +            + " ( "
 +            + " BBS_ID      "
 +            + " ,SEQ        "
 +            + "     -- 등등 생략 --      "
 +            + " )                 "
 +            + " VALUES          "
 +            + " ( "
 +            + " 'news-media'    "
 +            + " ,?              "
 +            + "     -- 등등 생략 --      "
 +            + "                       ";
 +
 +    pstmt = conn.prepareStatement(sqlText);
 +        
 +        
 +    for(RpCllctVO cllctVO: cllctVOs)
 +    {
 + 
 +        try
 +        {
 +
 +            pstmt.setInt(1,    cllctVO.getBitnaraSeq());
 +                        -- 등등 생략 --
 +    
 +            // Batch Job으로 모은다.
 +            pstmt.addBatch();
 +         
 +        }
 +        catch(Exception e)
 +        {
 +            e.printStackTrace();
 +        }
 +    }
 +    // Batch Job으로 모은걸 한번에 실행한다.
 +    pstmt.executeBatch();
 +    
 +    try {
 +        pstmt.close();
 +        psFileTmt.close();
 +        psMariaTmt.close();
 +    } catch (Exception e2) {e2.printStackTrace();}
 +
 +    try {
 +        connCu.close();
 +        conn.close();
 +    } catch (Exception e2) {e2.printStackTrace();}
 +    
 +    
 +
 +    
 +}
  
  
줄 80: 줄 161:
  
 === 중요 내용 === === 중요 내용 ===
-내용 인코딩이 UTF-8일 떄 제목 인코딩도 아래처럼 선언해야한다. +addBatch()를 사용하면 SQL문장을 LIST에 올려 놓고 executeBatch()를 사용 할 때 비로서 실제 DataBase에 저장 또는 변경 되는 것입니다. 
-> ex) message.setSubject(MimeUtility.encodeText(consultTitle, "UTF-8", "B")); +
-> 'MimeUtility.encodeText()'를 사용하면 catch에 'UnsupportedEncodingException eME'도 선언해줘야한다. +
-> ex) catch (MessagingException | UnsupportedEncodingException eME)+
  
 === 소스 출처 === === 소스 출처 ===
-> 위 소스는 내부 프로젝트 3곳에서 검증이 되었습니다.  +> 위 소스는 내부 프로젝트 P * * * (기업)에서 검증이 되었습니다. 
-> K * * (기관), 코 * * * * (기업), H * * * * (대학) 에 모두 적용된 것입니다.+
  
 ===== Tip ===== ===== Tip =====
 +> 10만건 이상 List에 올렸다가 한번에 실행하면 오류가 날수도있다.
 +<code java>
 +    if( (count % 100000) == 0){
 +        System.out.println(count + "건 처리중");
 +        pstmt.executeBatch();
 +    }
 +
 +</code>
 +> for문안에 addBatch() 를 하고 카운터를 늘린다음 10만건이 되면 바로 Batch()를 실행해야한다.
  
 ===== Troubleshooting ===== ===== Troubleshooting =====
  
 ===== Ref ===== ===== Ref =====
-  * [[https://blog.mailtrap.io/embedding-images-in-html-email-have-the-rules-changed/#CID_attachments_or_embedding_an_image_using_MIME_object|Embedding Images in HTML Email: Have the Rules Changed?]] +  * [[http://ojc.asia/bbs/board.php?bo_table=LecJDBC&wr_id=25|한번에 여러 레코드 입력시 addBatch() 쓰세요]] 
  
  
줄 101: 줄 187:
  
  
-{{tag>주레피 도봉산핵주먹 mail mail인코딩 SMTP}}+{{tag>주레피 도봉산핵주먹 .Batch() javaDB 데이터대용량처리}}
/volume1/web/dokuwiki/data/attic/wiki/java/batch.1588840300.txt.gz · 마지막으로 수정됨: 2022/03/10 19:52 (바깥 편집)