Java批量插入數據

實現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代碼  

          

 Class.forName("com.mysql.jdbc.Driver");
            Connection con = (Connection)DriverManager.getConnection("jdbc:mysql://" +
                    "localhost:3306/excel2mysql","wanle", "wanle");
            // 關閉事務自動提交
            con.setAutoCommit(false);
 
            SimpleDateFormat sdf = newSimpleDateFormat("HH:mm:ss:SS");
            TimeZone t = sdf.getTimeZone();
            t.setRawOffset(0);
            sdf.setTimeZone(t);
            Long startTime =System.currentTimeMillis();
 
            PreparedStatement pst =(PreparedStatement) con.prepareStatement("insert into test04 values (?,'中國')");
            for (int i = 0; i < 10000; i++){
                pst.setInt(1, i);
                // 把一個SQL命令加入命令列表
                pst.addBatch();
            }
            // 執行批量更新
            pst.executeBatch();
            // 語句執行完畢,提交本事務
            con.commit();
 
            Long endTime =System.currentTimeMillis();
            System.out.println("用時:" + sdf.format(newDate(endTime - startTime)));
 
            pst.close();
            con.close();

 

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

 

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