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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM