我们有两个具有相同结构的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();
}
我的代码有问题吗?有什么建议 ? 我应该注意,由于某种原因,我不允许使用任何外部工具!
答案 0 :(得分:3)
不要浪费你的时间。创建一个数据库链接并在PL / SQL中写几行,你就完成了。
答案 1 :(得分:1)
我认为你在用这种方法遇到麻烦。表格结构的变化频率如何?这个表中的数据有多重要?
我建议您将查询和您需要的任何其他配置外部化,然后确保您具有良好的错误处理功能,并且如果架构不再符合您的预期,则可以正常退出。
然后,如果架构发生更改,您可以更新配置而不是代码。