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