需要在java中同步来自不同数据库的两个表

时间:2014-12-30 10:44:58

标签: java java-ee synchronization

通常要在网络中同步一个表我可以编写一个简单的sql查询并运行它来同步表,但是如果源数据库不同(可能是db2,mssql,mysql,oracle - 我可以从哪里来)将数据输入目的地表。)

我应该如何在java中编写代码来实现这一目标?我知道我可以在java中创建dblinks来从外部网络数据库中获取数据,但dblinks只能用于相同类型的数据库。我无法弄清楚我脑子里的实施情况。请指出我正确的方向,以便我可以采取婴儿步骤,并学习相同,因为我是java的新手

2 个答案:

答案 0 :(得分:2)

您可以使用普通JDBC执行此操作。代码示例,未经测试:

void migrate() throws SQLException {
        Connection connA = DriverManager.getConnection("jdbc:oracle:thin:@myhost:1521:orcl");
        Connection connB = DriverManager.getConnection("jdbc:mysql://192.168.1.33/test");

        PreparedStatement stmA = connA.prepareStatement("select * from product where 1=1");
        PreparedStatement stmB = connB.prepareStatement("insert into prod values(?,?,?,?)");

        ResultSet rs = stmA.executeQuery();
        while (rs.next()) {
            for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) {
                stmB.setObject(i + 1, rs.getObject(i + 1));
            }
            stmB.executeUpdate();
        }

        connA.close();
        connB.close();
    }

答案 1 :(得分:0)

数据迁移如果要将数据从一个数据库迁移到另一个不同类型的数据库,

假设您有AB两个不同的数据库,则必须以A格式从XML数据库导出数据,表名为XML父node(根据您的数据库创建结构)。

然后解析XML's并创建A中存在的每个表的对象,然后使用任何XML解析器来解析你的XML,使用hibernate save() api将每个对象放在另一个数据库中,管理表中是否有关系,然后先插入主表数据​​,然后插入子项数据。

通过这种方法,您无需每次都依赖于目标(B)数据库,在hibernate的帮助下,您可以轻松更改数据库。