Java 批量插入數據庫(MySQL)數據

實現Java批量插入數據庫數據,在javaeye中看到過幾篇關於實現Java批量插入數據庫數據,轉載時沒有找到,就自己寫一下,也算是對自己學習過程中所遇到過的問題做一個總結。

一般關於批量向數據庫插入數據都採用PreparedStatement、Statement…………也包括直接使用JDBC API、框架…………

也看到過幾篇關於這些內容的總結,及大家的評論,以下爲我總結的關於批量向數據庫插入數據。

 

1,使用JDBC API實現配量插入數據:有篇文章介紹過關於JDBC API、Hibernate實現批量插入數據,採用JDBC API 方式實現隨着數據的增長,速度更勝於Hibernate。當然,對於這個測試的準確我並不保證,但是我也會優先選用JDBC API方式實現(原因:簡單、易學、相對於框架更通用,不會過時)。

 

2,採用PreparedStatement對象實現批量插入數據:PreparedStatement是真正的批處理命令,不是其他的僞批處理命令可以相比的(個人意見),它相對於其他的實現批量處理是非常的強大,比如字段不斷改變,每次都要從文件從新讀取就只能使用PreparedStatement對象來實現。再有就是存在即合理,既然PreparedStatement對象可以多次高效地執行預編譯的語句,就一定有其原因(JDk源碼沒有分析過,和Statement實現的區別不瞭解)。

 

3,實現批量插入數據庫數據

 

 

Java代碼  收藏代碼
  1. Class.forName("com.mysql.jdbc.Driver");  
  2. Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://" +  
  3.         "localhost:3306/excel2mysql""wanle""wanle");  
  4. // 關閉事務自動提交  
  5. con.setAutoCommit(false);  
  6.   
  7. SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");  
  8. TimeZone t = sdf.getTimeZone();  
  9. t.setRawOffset(0);  
  10. sdf.setTimeZone(t);  
  11. Long startTime = System.currentTimeMillis();  
  12.   
  13. PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into test04 values (?,'中國')");  
  14. for (int i = 0; i < 10000; i++) {  
  15.     pst.setInt(1, i);  
  16.     // 把一個SQL命令加入命令列表  
  17.     pst.addBatch();  
  18. }  
  19. // 執行批量更新  
  20. pst.executeBatch();  
  21. // 語句執行完畢,提交本事務  
  22. con.commit();  
  23.   
  24. Long endTime = System.currentTimeMillis();  
  25. System.out.println("用時:" + sdf.format(new Date(endTime - startTime)));  
  26.   
  27. pst.close();  
  28. con.close();  

 

插入10000條數據用時3141毫秒,對於我已經很理想了, 畢竟我們不會使用MySQL進行非常大型項目的開發,對於10000條數據3秒多點,已經可以了,我相信對於大家應該也足以應付了,我們不會每天都插入10000條吧,當然對於我的話如果有這樣的需求,我不會選擇MySQL。

 

以上所有內容均爲對於我所學習使用過程中、實際項目開發中的總結,也應用於其中。對於批量插入,數據導入均採用這樣的方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章