분류전체
홈 > 블로그 > 분류전체
'분류전체'에 해당되는 글이 총 270건 있습니다
2012-02-01 기타 - [News] 2012 IM Big Data 매거진 편찬 Hot
2012-02-01 기타 - [News] 2012 Korea IOD 세미나가 열립니다. 지금 등록하세요!... Hot
2012-01-30 KDUG Event - KDUG 회원 정보 업데이트 이벤트 Hot
2012-01-26 DB2 Tips - 3가지 오래된 모니터링 기능에 대한 새로운 정보... Hot
2012-01-19 공지사항 - [KDUG 매거진 33호] 2011, KDUG Best Top 10 Hot
2012-01-18 기타 - IBM dW : 세계 최대 프리미어 개발자 네트워크... Hot
2012-01-17 기타 - 2011, KDUG Best Top 10 Hot
2012-01-11 DB2 Tips - DB2 용 JDBC 드라이버 버전 Hot
2012-01-10 IT 컬럼 - 클라우드 데이터베이스 알아보기 Hot
2012-01-06 DB2 Tips - DB2 9.7 Fix5 on Linux , HADR & TSA 사용시 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 ㆍ 7 ㆍ 8 ㆍ 9 ㆍ 10 ㆍ 11 ㆍ 12 ㆍ 13 ㆍ 14 ㆍ 15 ㆍ 16 ㆍ 17 ㆍ 18 ㆍ 19 ㆍ 20 ㆍ Next  
분류전체보기
공지사항 (56)
DB2 자료 공유 (69)
기타 (56)
IT 컬럼 (13)
KDUG Event (26)
DB2 Tips (52)
[News] 2012 IM...
[News] 2012 Ko...
KDUG 회원 정보 업데이...
3가지 오래된 모니터링 기...
[KDUG 매거진 33호]...
Total : 483,768
today:223 | Yesterday:473
 
이용약관    |    개인정보보호정책    |    운영자메일  
KDUGDB2 LUW 9.5 기반에서 운영되고 있습니다.