如何将数据从连接插入到其他连接?

时间:2013-06-17 19:34:25

标签: java jdbc

我想将连接为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();            

谢谢。

3 个答案:

答案 0 :(得分: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
            }
        }
    }

答案 1 :(得分: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。

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

答案 2 :(得分:0)

请按照以下步骤操作:

  • 使用一个数据访问类

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

  • 连接到MySQL数据库
  • 从Oracle数据库中的表中读取行

  • 执行任何列转换

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

  • 关闭数据库连接