用java快速批量insert数据

来源:互联网 发布:linux 没有home目录 编辑:程序博客网 时间:2024/06/07 06:25

由于要项目准备上线,所以要准备大量测试数据测试新项目的性能,但是又不太会用存储过程和数据库事务进行数据插入。

最开始使用最简单的java的for循环语句不停的add对象,但是发现这个效率太低,要插入几百万数据估计得一天,于是在网上找了下,找到一篇直接使用jdbc直接插入数据的,拿下来试了下发现性能虽然比new对象好,但是效率也很低。

只能再找,终于找到一个很高的,也就是使用批次提交方式的sql执行,这个100万数据大概也就30秒左右。



[java] view plain copy
print?在CODE上查看代码片派生到我的代码片
  1. public static void insertRelease() {  
  2.         Long begin = new Date().getTime();  
  3.         String sql = "INSERT INTO tb_big_data (count, create_time, random) VALUES (?, SYSDATE(), ?)";  
  4.         try {  
  5.             conn.setAutoCommit(false);  
  6.             PreparedStatement pst = conn.prepareStatement(sql);  
  7.             for (int i = 1; i <= 100; i++) {  
  8.                 for (int k = 1; k <= 10000; k++) {  
  9.                     pst.setLong(1, k * i);  
  10.                     pst.setLong(2, k * i);  
  11.                     pst.addBatch();  
  12.                 }  
  13.                 pst.executeBatch();  
  14.                 conn.commit();  
  15.             }  
  16.             pst.close();  
  17.             conn.close();  
  18.         } catch (SQLException e) {  
  19.             e.printStackTrace();  
  20.         }  
  21.         Long end = new Date().getTime();  
  22.         System.out.println("cast : " + (end - begin) / 1000 + " s");  
  23.     }  

原文地址:http://blog.csdn.net/frinder/article/details/38830723
0 0
原创粉丝点击