是否可以使用 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()
方法。
我有很多数据库 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()
方法。