为了账号安全,请及时绑定邮箱和手机立即绑定

用JDBC实现批量插入的有效方法

用JDBC实现批量插入的有效方法

暮色呼如 2019-07-20 09:56:35
用JDBC实现批量插入的有效方法在我的应用程序中,我需要做大量的插入。这是一个Java应用程序,我使用普通JDBC执行查询。数据库是Oracle。不过,我已经启用了批处理,因此可以节省网络延迟来执行查询。但是,查询作为单独的插入依次执行:insert into some_table (col1, col2) values (val1, val2)insert into some_table (col1, col2) values (val3, val4)insert into some_table (col1, col2) values (val5, val6)我想知道以下插入形式是否更有效:insert into some_table (col1, col2) values (val1, val2), (val3, val4), (val5, val6)也就是说,将多个插入物折叠成一个。还有其他让批量插入更快的提示吗?
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

这是前两个答案的混合:

  PreparedStatement ps = c.prepareStatement("INSERT INTO employees VALUES (?, ?)");

  ps.setString(1, "John");
  ps.setString(2,"Doe");
  ps.addBatch();

  ps.clearParameters();
  ps.setString(1, "Dave");
  ps.setString(2,"Smith");
  ps.addBatch();

  ps.clearParameters();
  int[] results = ps.executeBatch();


查看完整回答
反对 回复 2019-07-20
?
青春有我

TA贡献1784条经验 获得超8个赞

这个Statement提供以下选项:


Statement stmt = con.createStatement();


stmt.addBatch("INSERT INTO employees VALUES (1000, 'Joe Jones')");

stmt.addBatch("INSERT INTO departments VALUES (260, 'Shoe')");

stmt.addBatch("INSERT INTO emp_dept VALUES (1000, 260)");


// submit a batch of update commands for execution

int[] updateCounts = stmt.executeBatch();


查看完整回答
反对 回复 2019-07-20
  • 3 回答
  • 0 关注
  • 2306 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信