后端開發:【批量插入海量數據之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,感慨萬千。