DB2 Tips
홈 > 블로그 > DB2 Tips
'DB2 Tips'에 해당되는 글이 총 52건 있습니다
2012-01-26 DB2 Tips - 3가지 오래된 모니터링 기능에 대한 새로운 정보... Hot
2012-01-11 DB2 Tips - DB2 용 JDBC 드라이버 버전 Hot
2012-01-06 DB2 Tips - DB2 9.7 Fix5 on Linux , HADR & TSA 사용시 Hot
2012-01-03 DB2 Tips - DataStage를 사용하여 DB2에서 오라클로 혹은 오라클에서 DB2로 마이그레이션 하기... Hot
2011-12-20 DB2 Tips - 라이프 세이버 유틸리티 : db2diag 및 db2dart...  (1) Hot
2011-12-13 DB2 Tips - DB2 명령어 : db2cfexp 및 db2cfimp Hot
2011-12-06 DB2 Tips - DB2 DPF에 대한 고 가용성 Hot
2011-11-23 DB2 Tips - 관계형 테이블에서 XML을 신속하게 생성하는 방법... Hot
2011-11-08 DB2 Tips - DB2 기본 테이블, 생성된 임시 테이블 및 선언된 임시 테이블 요약... Hot
2011-10-25 DB2 Tips - runstats 명령을 자동으로 실행하는 방법... Hot
임의의 Oracle Table 데이터를 DB2 로 넘기는 자바 프로그램   Hot
DB2 Tips  | 2010-08-06 14:16:37  

IBM Data Movement Tool도 있지만 간단한 데이터를 넘길 때 유용할 수 있을 것 같습니다.
급하게 만들어 쓴거라 프로그램이 이쁘지 않습니다.

가정 : 양쪽에 Table DDL이 만들어져 있다고 가정
사용방법 :
java tc <테이블명>

tc.java
-----------------
import java.sql.*;
import java.io.*;
import java.util.Collection;
import java.sql.DatabaseMetaData;
import java.util.ArrayList;

public class tc
{

  static private Connection conora = null;
  static private Connection condb2 = null;
  static private PreparedStatement pstmt = null;
  static private PreparedStatement pstmt2 = null;
  static private ResultSet rs = null;

 public static void main(String[] args)  throws Exception
 {
   try {
     tcopy(args[0]);
   } catch(Exception e){
    e.toString();
    e.printStackTrace();
   }
 }

 public static void tcopy (String table)  throws Exception // Method-1
 {
  StringBuffer query = new StringBuffer();

  StringBuffer selectSQL = new StringBuffer();
  StringBuffer insertSQL = new StringBuffer();
  StringBuffer values = new StringBuffer();

  int commit_cnt = 10000;

  dbconn();

  Collection<String> columns = new ArrayList<String>();
  try {
    query.append("select * from ");
    query.append(table);

    pstmt = conora.prepareStatement(query.toString());
    rs = pstmt.executeQuery();

    ResultSetMetaData md = rs.getMetaData();

    for (int i = 1; i <= md.getColumnCount(); i++)
      columns.add(md.getColumnName(i));
    rs.close();

   } catch(Exception e){
    e.toString();
    e.printStackTrace();
   }


  System.out.println("Begin copy: " + table);

  selectSQL.append("select ");
  insertSQL.append("insert into ");
  insertSQL.append(table);
  insertSQL.append("(");

  boolean first = true;
  for (String column : columns)
    {

      if (!first)
      {
        selectSQL.append(",");
        insertSQL.append(",");
        values.append(",");
      } else
        first = false;
      selectSQL.append(column);
      insertSQL.append(column);
      values.append("?");
    }

  selectSQL.append(" FROM ");
  selectSQL.append(table);

  insertSQL.append(") VALUES (");
  insertSQL.append(values);
  insertSQL.append(")");

  int rows = 0;
  try { // Start Try-1

   pstmt = condb2.prepareStatement(insertSQL.toString());
   pstmt2 = conora.prepareStatement(selectSQL.toString());

   rs = pstmt2.executeQuery();

   while(rs.next()) { // Start While-1
     rows++;
     for (int i = 1; i <= columns.size(); i++)
     {
        pstmt.setString(i, rs.getString(i));
     }
     pstmt.execute();
     if ( (rows % commit_cnt) == 0) {condb2.commit();System.out.println(rows);}
    } // End while

    System.out.println("Copied " + rows + " rows.");
    System.out.println(" ");
   }  // End Try
   catch(Exception e) {
       e.printStackTrace();
     }
   finally { //Finally-1
     try{
     if(rs !=null) rs.close();
     if(pstmt !=null) pstmt.close();
     if(pstmt2 !=null) pstmt2.close();
     //stmt.close();
     pstmt.close();
     conora.close();
     condb2.close();
     }
     catch(Exception ee) {
       ee.printStackTrace();
     }
   } // Finally-1
  } // Method-1

  public static Connection dbconn() throws SQLException {
    try {
        Class.forName("oracle.jdbc.OracleDriver");
        conora = DriverManager.getConnection("jdbc:oracle:thin:@211.104.95.97:1521:ORCL","system","manager");

        Class.forName("com.ibm.db2.jcc.DB2Driver");
        condb2 = DriverManager.getConnection("jdbc:db2://localhost:65000/prod2","db2inst1","db2inst1");
    }
    catch (Exception e) {
      System.out.println("SQL :: " + "\n" + e.getMessage()); }

    return conora;

    }


^ㅇ^  
트랙백 : 0 댓글: 0
내블로그주소 :
 1 ㆍ 2 ㆍ 3 ㆍ 4 ㆍ 5 ㆍ 6    
분류전체보기
공지사항 (56)
DB2 자료 공유 (69)
기타 (56)
IT 컬럼 (13)
KDUG Event (26)
DB2 Tips (52)
[News] 2012 IM...
[News] 2012 Ko...
KDUG 회원 정보 업데이...
3가지 오래된 모니터링 기...
[KDUG 매거진 33호]...
Total : 483,541
today:469 | Yesterday:639
 
이용약관    |    개인정보보호정책    |    운영자메일  
KDUGDB2 LUW 9.5 기반에서 운영되고 있습니다.