0

我想从 A 表中导出数据并将数据导入到 B 表中。A 和 B 表是相同的表,它们有 100 列。如何在 JDBC 中导出和导入?我想动态地做。我不想将一列写入其他列。(2 个表具有相同的列。但是 oracle 中的表 A 和 mysql 中的表 B)谢谢。

4

2 回答 2

1

尝试:

insert into tableB
select * from tableA

如果表位于不同的数据库中,这也是可能的,在数据​​库之间创建 DB 链接(授予您这样做的权限)。

否则,您可以从内存中的 TableA 复制最大数量的列,然后将它们插入到 TableB 中,但我强烈反对这样做。

不幸的是,在 java 中没有什么类似于 .NET BulkCopy

于 2013-06-18T21:42:05.943 回答
0

这可能会有所帮助:

ResultSet rs = st.executeQuery("SELECT * FROM A");
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();

String insert_string = "INSERT INTO B(" ;
for (int i = 1; i < columnCount + 1; i++) {
     String column = rsmd.getColumnName(i);
     insert_string += column + ", " ;
     }
insert_string += " )"; // Column part of INSERT INTO B should be well formed

insert_string += " VALUES (" ;

int i=0;
while(i < columnCount - 1){
    i++;
    insert_string += "'"+ rs.getString(i)+"', " ;
}

insert_string += "'" + rs.getString(columnCount) + ")" ; // VALUES part should be ok by now 

到目前为止,我们必须有一个有效的语句,但这仅适用于对象INSERT中的一行。必须在代码中包含rs一个迭代,以便为所有 A 行重复创建该字符串。rs.next()INSERT

至于表演,老实说,我不知道。我不建议这样做,但我认为这是解决问题的一种公平方式。

于 2013-06-18T22:29:32.077 回答