如何导出表并将数据导入其他表?

时间:2013-06-18 21:35:56

标签: java jdbc

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

2 个答案:

答案 0 :(得分:1)

尝试:

insert into tableB
select * from tableA

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

您可以在内存中复制TableA中的最大列数,然后将它们插入TableB中,但我强烈反对这一点。

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

答案 1 :(得分: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对象中的一行。代码中必须包含rs.next()的迭代,以便为所有A行重复创建INSERT字符串。

至于表现,我老实说没有任何线索。我不推荐这个,但我认为这是解决问题的公平方式。