-2

我们有两个具有相同结构的 Oracle 数据库。我们需要将一个表的内容从一个数据库复制到另一个数据库。我正在编写一个 JAVA 程序来完成这项任务。由于表的结构将来可能会发生变化,因此程序必须能够自行调整。我尝试了以下代码:

try {
                ResultSet rsConfig = getConfigRows(srcDatabase); // this method returns SELECT * FROM TEST_TABLE
                ResultSetMetaData rsmd = rsConfig.getMetaData();
                int colCount = rsmd.getColumnCount();
                String columns = "";
                String values = "";
                for (int j = 1; j <= colCount; j++) {                       
                    columns += rsmd.getColumnName(j);
                    if (j <= colCount)
                        columns += ",";
                    values += "?";
                    if (j <= colCount)
                        values += ",";
                }

                String sql = "INSERT INTO TEST_TABLE(" + columns + ") VALUES("
                        + values + ")";
                PreparedStatement psDest = destDatabase.prepareStatement(sql);

                while (rsConfig.next()) {
                    for (int j = 1; j <= colCount; j++) {
                        psDest.setObject(j, (Object) rsConfig.getObject(rsmd
                                .getColumnName(j)));
                    }
                    psDest.executeUpdate();
                }

我的代码有问题吗?有什么建议么 ?我应该注意,由于某种原因,我不允许使用任何外部工具!

4

2 回答 2

3

不要浪费你的时间。创建一个数据库链接并在 PL/SQL 中编写几行代码就完成了。

于 2013-02-28T22:12:58.047 回答
1

我认为你在用这种方法自找麻烦。表结构多久真正改变一次?这张表中的数据有多重要?

我建议您将查询和您发现需要的任何其他配置外部化,然后确保您有良好的错误处理并在模式不再是您所期望的情况下优雅地退出。

然后,如果架构更改,您可以更新配置而不是代码。

于 2013-02-28T21:50:50.897 回答