mysql批量添加数据
来源:互联网 发布:毕向东java基础课件 编辑:程序博客网 时间:2024/05/18 00:00
1、开启mysql的批量处理能力
在连接url后面添加 ?useServerPrepStmts=false&rewriteBatchedStatements=true
如:jdbc:mysql://127.0.0.1:3306/db?useServerPrepStmts=false&rewriteBatchedStatements=true
2、步骤
设置不自动提交 conn.setAutoCommit(false);
编写insert 语句
循环处理数据
提交事务
具体代码如下:
public void addBatch(List<BookInfo> bookInfos, Connection conn){PreparedStatement pstmt = null;try {String sql = "INSERT INTO `book_info` (`b_field1`,`b_field2`,`b_field3`) VALUES (?,?,?)";conn.setAutoCommit(false); // 设置手动提交int count = 0;pstmt = conn.prepareStatement(sql);for (BookInfo bookInfo : bookInfos) {int index = 1;pstmt.setObject(index++, bookInfo.getField1());pstmt.setObject(index++, bookInfo.getField2());pstmt.setObject(index++, bookInfo.getField3());pstmt.addBatch(); // 加入批量处理count++;}pstmt.executeBatch(); // 执行批量处理conn.commit(); // 提交System.out.println("BookInfo addBatch All down : " + count);} catch (Exception e) {LogUtils.error("BookInfo addBatch出错", e);//记录错误日志try {conn.rollback();//回滚} catch (SQLException e1) {e1.printStackTrace();}} finally {DBPoolUtils.closeAll(conn, pstmt);//关闭连接}}
注意以上bookInfos的大小取决于mysql的my.ini配置,如果数据量很大可以优化配置,具体步骤如下:
修改 bulk_insert_buffer_size=120M 或者更大,默认是8M
将insert语句的长度设为最大。
Max_allowed_packet=1M
Net_buffer_length=8k
保存
阅读全文
0 0
- mysql批量数据添加
- mysql批量添加数据
- mysql 批量添加数据
- mysql批量添加数据
- mysql批量添加重复数据
- 如何批量在mysql里添加数据
- mysql中批量添加一定规则的数据
- MySQl数据库-批量添加数据的两种方法
- JDBC--批量添加数据
- JDBC--批量添加数据
- 批量添加数据
- java 批量添加数据
- 批量数据添加到表中
- Sqlite批量添加数据
- 批量添加数据
- C#批量添加数据
- 批量添加数据
- jeesite 批量添加数据
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- smoj2019(AC自动机)
- 1133. Splitting A Linked List (25)-PAT甲级真题
- angularjs表格批量删除和全选反选
- idea 中git的reset和revert
- mysql批量添加数据
- 删除数据库中重复的记录(保留一条)-oracle、mysql版
- Java实现向Alluxio集群写数据的代码样例
- image记录
- 写给非专业人士的服务器技术指南
- git使用代理
- [Android][第一行代码][第 10 章 服务]
- 弹框
- 1075. 链表元素分类(25)-PAT乙级真题