Java 批量導入大量數據


項目上線測試。產品說導入太慢了,一樣的數據量另外一個系統只需要1分鍾,我們要5分鍾。。。。

開始以為是因為POI在解析07版本的Excel時候,因為數據量太多所以慢了,后面看下日志,發現是在入庫的時候花的時間。

原因:

  原來的更新不是批量執行,是一條條執行,所以太慢了

    try
    {
      conn.setAutoCommit(false);
      for (String sql : sqllist)
      {
        stmt = conn.prepareStatement(sql);
        recentSql = sql;
        stmt.executeUpdate();
        stmt.close();
      }
      conn.commit();
      flag = true;
    }

優化:

  先把批量的sql添加到列表中,再一次性提交執行

        try {// 關閉事務自動提交
            conn.setAutoCommit(false);
            stmt = conn.createStatement();
            Long startTime = System.currentTimeMillis();
            for (String sql : sqllist) {
                // 把一個SQL命令加入命令列表
                stmt.addBatch(sql);
            }
            // 執行批量更新
            stmt.executeBatch();
            // 語句執行完畢,提交本事務
            conn.commit();
            flag = true;
            Long endTime = System.currentTimeMillis();
            log.info("用時:" + (endTime - startTime));
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM