0

我想将连接为 oracle 的表中的数据插入到连接为 的另一个表中mysql。我使用 netbeans 和jdbc驱动程序。是否可以?我的意思是如何从A表(X连接)中选择数据并插入B表(Y连接)

connection X = DriverManager.getConnection("jdbc:oracle:thin:@" + host__ + ":" + port__ + servic, props);
connection Y = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username", "password");
conn.close();            

谢谢你。

4

3 回答 3

1

这是一个将数据库表复制到另一个数据库的小示例。您只需要两个连接 conf(rom) 和 cont(o)。您将需要修改 getConnection 参数、表名和字段类型。

    // Copy
    Statement stf, stmt;
    Connection conf, cont;
    ResultSet rsf, rs;

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Class.forName("com.mysql.jdbc.Driver");
        conf = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:" + databaseFrom, "user1", "passwd1");
        try {
            stf = conf.createStatement();
            rsf = stf.executeQuery("select * from supplier order by sname");

            // read from rsf write to rs!
            cont = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + databaseTo, "user2", "passwd2");
            stmt = cont.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);


            rs = stmt.executeQuery("select * from supplier order by sname");

            while (rsf.next()) {
                rs.moveToInsertRow();

                rs.updateInt(1, rsf.getInt(1));
                rs.updateString(2, rsf.getString(2));
                rs.updateString(3, rsf.getString(3));
                rs.updateString(4, rsf.getString(4));
                rs.updateInt(5, rsf.getInt(5));
                rs.updateString(6, rsf.getString(6));
                rs.updateInt(7, rsf.getInt(7));
                rs.updateDouble(8, rsf.getDouble(8));
                rs.updateString(9, rsf.getString(9));

                rs.insertRow();
            }

        } catch (SQLException s) {
            JOptionPane.showMessageDialog(this, "problem creating database " + s);
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, e.getStackTrace());
    } finally {
        if (stf != null) {
            try {
                stf.close();
                stmt.close();
            } catch (SQLException e) {
                // handle Exception
            }
        }
        if (conf != null) {
            try {
                conf.close();
                cont.close();
            } catch (SQLException e) {
                // handle Exception
            }
        }
    }
于 2013-06-17T19:53:48.590 回答
1

您可以为不同的连接创建两个类:

public class OracleConnectionManager {
    public static Connection getOracleConnection() throws SQLException, ClassNotFoundException {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection connection = null;
        connection = DriverManager.getConnection(
            "jdbc:oracle:thin:@localhost:1521:oracle","username","password");
        return connection;
    }
}


public class MySqlConnectionManager {
    public static Connection getMySqlConnection() throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = null;
        connection = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306:mysql","username","password");
        return connection;
    }
}

现在您可以使用这些类来获取特定的连接并做任何您想做的事情。您可以获取oracle数据库连接并获取oracle语句>结果集,对其进行迭代并将数据插入mysql。

如果需要更多信息,请告诉我。

于 2013-06-17T20:10:15.250 回答
0

跟着这些步骤:

  • 使用一种数据访问类连接到 Oracle 数据库

  • 使用不同的数据访问类连接到 MySQL 数据库

  • 从 Oracle 数据库中的表中读取行

  • 执行任何列转换

  • 将行写入 MySQL 数据库中的表

  • 关闭数据库连接

于 2013-06-17T19:40:41.840 回答