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

 

posted @ 2020-02-18 14:34  SI3  阅读(1489)  评论(0编辑  收藏  举报