【问题标题】:Can a ResultSet be used to directly populate a table?可以使用 ResultSet 直接填充表格吗?
【发布时间】:2015-03-12 18:37:00
【问题描述】:

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

【问题讨论】:

    标签: java mysql sql database jdbc


    【解决方案1】:

    如果你正在创建新表,你可以这样做

     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() 方法。

    【讨论】:

    • 有道理。谢谢,感谢您指出它可以通过 JDBC 完成,因为我必须使用 java 来完成。
    【解决方案2】:

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

    INSERT INTO table2
     SELECT * FROM table1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 2023-03-09
      • 2012-10-15
      • 1970-01-01
      相关资源
      最近更新 更多