可以使用ResultSet直接填充表吗?

时间:2015-03-12 18:37:00

标签: java mysql sql database jdbc

我有很多数据库表需要修改数据,因为我将使用Java。由于我无法控制的原因,我将查询每个表,从中获取一组数据,并将该数据加载到单独的表中。最快最有效的方法是什么?我可以从Statement对象中获取ResultSet并以某种方式使用它来填充新表吗?或者我是否需要遍历ResultSet并使用PreparedStatement或其他内容逐行将行重新插入到新表中?

2 个答案:

答案 0 :(得分:2)

如果您要创建新表,则可以

 CREATE TABLE whatever AS
 SELECT something FROM sometable WHERE somecondition

这是一项强大的功能。在这里阅读它。 http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html

如果目标表已存在,则可以使用

INSERT INTO whatever  (col1, col2, col3)
SELECT col1, col2, col3 FROM sometable WHERE somecondition

这也很强大。 http://dev.mysql.com/doc/refman/5.6/en/insert-select.html

在这两种情况下,这都是一种有效的做事方式;您的数据不必从MySQL服务器传输到客户端并返回。

从JDBC发出这种SQL命令很容易。使用execute()对象的Statement方法。

答案 1 :(得分:1)

执行此操作的最快捷最有效的方法是执行the whole thing in SQL,例如

INSERT INTO table2
 SELECT * FROM table1;