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

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

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

开满天机 2019-08-02 07:02:59
用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贡献1815条经验 获得超13个赞

这是前两个答案的混合:

  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-08-03
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

这个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-08-03
  • 3 回答
  • 0 关注
  • 857 浏览

添加回答

举报

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