zoukankan      html  css  js  c++  java
  • JDBC往MYSQL高效批量插入数据

    后端开发:【批量插入海量数据之Java插入MySql】解决方案

    https://www.jianshu.com/p/a271600f0bda

    JDBC实现往MySQL插入百万级数据

    https://www.cnblogs.com/fnz0/p/5713102.html

    处理 rewriteBatchedStatements=true

    https://www.jianshu.com/p/0f4b7bc4d22c

    步骤

    1.先将要插入的数据组成在map中,再将map依次放入List中

                                HashMap<String,String> map = new HashMap<>();
                                map.put("createDate",createDate);
                                map.put("ip",ip);
                                map.put("userId",userId);
                                map.put("referer",referer);
                                map.put("method",method);
                                map.put("useragent",useragent);
    List<Map> dataList = new ArrayList<Map>();
    dataList.add(map);

    2.在统一遍历dataList 将数据批量插入MYSQL

                                for (int i = 0; i < dataList.size(); i ++) {
                                    ps.setString(1, (String) dataList.get(i).get("referer"));
                                    ps.setString(2,(String) dataList.get(i).get("userId"));
                                    ps.setString(3, (String) dataList.get(i).get("method"));
                                    ps.setString(4, (String) dataList.get(i).get("createDate"));
                                    ps.setString(5, (String) dataList.get(i).get("useragent"));
                                    ps.setString(6, (String) dataList.get(i).get("ip"));
                                    // 执行sql语句
    //                                ps.executeUpdate();
                                    ps.addBatch();
                                    System.out.println("插入一条记录!!!");
                                }
                                ps.executeBatch();

    3.注意,此时JDBC连接URL字符串中需要新增一个参数:rewriteBatchedStatements=true

     

    4.最终效果:在原先逐行插入为25633ms的基础上提高到181ms,感慨万千。

  • 相关阅读:
    第一次开发分享的经验教训
    开发人员的 Linux 命令学习清单
    代码质量基本准则
    职业发展思考(二)
    软件调试的基本技巧
    多数据源的动态配置与加载使用兼框架交互的问题调试
    对象与并发:概述
    编程模式: 回调
    创新式开发探索(一) —— 开篇
    Linux 命令学习示例: tr
  • 原文地址:https://www.cnblogs.com/SI0301/p/12326128.html
Copyright © 2011-2022 走看看