我想从 A 表中导出数据并将数据导入到 B 表中。A 和 B 表是相同的表,它们有 100 列。如何在 JDBC 中导出和导入?我想动态地做。我不想将一列写入其他列。(2 个表具有相同的列。但是 oracle 中的表 A 和 mysql 中的表 B)谢谢。
问问题
2341 次
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 回答