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));
        }

 

posted @ 2018-09-07 17:13  一个小机灵  阅读(4779)  评论(0编辑  收藏  举报