2011-09-22 4 views
2

Je souhaite accéder aux tables Oracle dans DB2 (quelque chose comme DBlink de DB2 vers Oracle). Toute aide est appréciée.copier des tables Oracle vers DB2

+0

Voulez-vous migrer des données d'Oracle vers DB2? Accéder aux tables DB2 d'Oracle (même pas si c'est possible)? – Shahzeb

+1

Vous devriez vous décider si vous voulez a) copier des données d'Oracle vers DB2 ou b) accéder aux tables Oracle depuis DB2 ou c) accéder aux tables DB2 d'Oracle. – Filburt

+0

Je veux accéder aux tables Oracle dans DB2, mais je ne trouve aucune documentation. – hnm

Répondre

4

Vous pouvez utiliser la fédération db2. Un lien est here.

+0

Merci, c'était très utile. – hnm

+0

Le lien est inactif. – Isaac

1

Oracle dispose d'une fonction appelée services hétérogènes qui nous permet de créer des liens entre des bases de données Oracle et des bases de données non-Oracle, y compris DB2. Find out more.

+0

Les services hétérogènes permettent d'accéder aux tables DB2 dans Oracle, mais ce dont nous avons besoin maintenant, c'est d'accéder aux tables Oracle dans DB2. – hnm

0
import com.ibm.db2.jcc.am.gc; 
import com.ibm.db2.jcc.t2zos.s; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.Statement; 
import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import static org.omg.IOP.ENCODING_CDR_ENCAPS.value; 

public class automateExport { 

    static String value; 

    public static void main(String[] args) throws SQLException, ClassNotFoundException { 
     // ResultSet rs = null; 
     String table_name; 
     Integer temp = 0; 
     Integer temp1 = 0; 
     Integer temp2 = 1; 
     String column_name = null; 
     String tableName = null; 
     String columnType = null; 
     int precision = 0; 

     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     Connection codal = DriverManager.getConnection("jdbc:oracle:thin:@192.168.01.53:1521:orcl", "NAVID", 
       "oracle"); 

     StringBuilder sb = new StringBuilder(1024); 

     Connection DB2 = getConnection(); 
     String sql = "SELECT TABSCHEMA,TABNAME,COLNAME,TYPENAME,LENGTH FROM SYSCAT.COLUMNS WHERE TABSCHEMA NOT LIKE 'SYS%' "; 
     PreparedStatement mainStmt = DB2.prepareStatement(sql); 
     ResultSet rs = mainStmt.executeQuery(); 
     ResultSetMetaData rsmd = rs.getMetaData(); 
     int columnCount = rsmd.getColumnCount(); 
     String str1 = "ADMIN2"; 

     while (rs.next()) { 

      table_name = rs.getString(2); 

      if (table_name.equalsIgnoreCase(str1)) { 
       if (temp1 == 0) { 

        sb.append("create table").append(" "); 
        sb.append(table_name).append("("); 
        if (temp2 == 0) { 
         sb.append(" ").append(column_name).append(" ").append(columnType); 
         if (precision != 0) { 
          sb.append("(").append(precision).append(")"); 
          sb.append(", "); 

         } 
        } 

        temp1 = 1; 
        temp = 1; 
       } 

       if (temp == 0) { 
        sb.append(table_name).append("("); 
        temp = 1; 
       } 
       column_name = rs.getString(3); 
       columnType = rs.getString(4); 
       sb.append(" ").append(column_name).append(" ").append(columnType); 
       precision = rs.getInt(5); 
       if (precision != 0) { 
        sb.append("(").append(precision).append(")"); 
        sb.append(", "); 
       } 
      } else { 
       temp2 = 0; 
       sb.replace(sb.length() - 2, sb.length(), ""); 
       sb.append(")"); 
       temp1 = 0; 
       str1 = str1.replaceAll(str1, table_name); 
       column_name = rs.getString(3); 
       columnType = rs.getString(4); 
       precision = rs.getInt(5); 
       String sql2 = sb.toString(); 
       PreparedStatement m = codal.prepareStatement(sql2); 
       m.executeUpdate(); 
       sb.delete(0, sb.length()); 
      } 
     } 
     codal.close(); 
     DB2.close(); 
/* 


     } 


    private static Connection getConnection() throws ClassNotFoundException, SQLException { 
     Class.forName("COM.ibm.db2os390.sqlj.jdbc.DB2SQLJDriver"); 
     Connection connection 
       = DriverManager.getConnection("jdbc:db2://localhost:50000/navid", "navid", "oracle"); 
     return connection; 

    } 

} 
Questions connexes