【问题标题】:JDBC, INSERT MULTIPLE records obtained from query, into other tableJDBC,INSERT MULTIPLE 从查询中获得的记录,插入到其他表中
【发布时间】:2010-07-25 07:02:38
【问题描述】:

我需要一次将多条记录插入 mysql 数据库。我正在做的是SELECT 在一张桌子上,来自我的带有 Prepared 语句的应用程序。我必须做的是将这些结果插入到另一个临时表中。

String sqlquery = "select * from table1 where arg1 = ?";
PreparedStatement statement;
statement = con.prepareStatement(sql);


ArrayList<String>termlist = index.getTermList();
for (int i = 0; i < termlist.size(); i++) 
{
    String search = termlist.get(i);
    statement.setString(1,search);

    ResultSet rs1 = statement.executeQuery(); //
}

这些套装可能很大。在每次迭代之后,以某种方式将此 ResultSet 插入到我的另一个表中的最快方法是什么?

如果有办法,如何将此结果集传递给某个存储过程?

【问题讨论】:

    标签: java mysql sql-server jdbc resultset


    【解决方案1】:

    您可以让数据库为您完成工作:

    INSERT INTO othertable
    SELECT col1, col2 FROM table1
    WHERE arg1 = ?
    

    这样您就不必将数据副本发送到那里已经存在的数据库。

    【讨论】:

    • 谢谢马克。天哪,这似乎很简单,我没想到。所以我只是把它作为准备好的声明???如果我这样做,如果我没有与搜索字符串匹配,是否有可能以某种方式保持对这个搜索字符串的引用?我的意思是如果我不做 ResultSet 计数???
    【解决方案2】:

    如果将逗号分隔的参数值列表传递到存储过程并使用IN (val1, val2, ...) 子句,则可以执行单个查询。不确定 MySQL 对 IN 子句长度的限制。

    这是一个split 实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多