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,感慨万千。

  • 相关阅读:
    Vim 在 windows 环境下的初步配置
    空间向量在任意平面的投影公式推导 (矩阵方法)
    jquery中获取元素的几种方式小结
    开源框架
    将插入的新行放入dataGridView的第一行
    go-mod 入门
    docker 常用启动命令
    golang str 首字母大写
    遇到过的几个难搞的问题
    jwt、session、oauth 异同
  • 原文地址:https://www.cnblogs.com/SI0301/p/12326128.html
Copyright © 2011-2022 走看看