是否可以使用 ResultSet 直接填充 table?

Can a ResultSet be used to directly populate a table?

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

最快最有效的方法是the whole thing in SQL,例如

INSERT INTO table2
 SELECT * FROM table1;

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

 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 命令很容易。使用 Statement 对象的 execute() 方法。