1. 程式人生 > >用java快速批量insert資料

用java快速批量insert資料

由於要專案準備上線,所以要準備大量測試資料測試新專案的效能,但是又不太會用儲存過程和資料庫事務進行資料插入。

最開始使用最簡單的java的for迴圈語句不停的add物件,但是發現這個效率太低,要插入幾百萬資料估計得一天,於是在網上找了下,找到一篇直接使用jdbc直接插入資料的,拿下來試了下發現效能雖然比new物件好,但是效率也很低。

只能再找,終於找到一個很高的,也就是使用批次提交方式的sql執行,這個100萬資料大概也就30秒左右。

[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片
  1. publicstaticvoid 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