java 数据库批量插入
来源:互联网 发布:守望先锋安娜技能数据 编辑:程序博客网 时间:2024/06/05 00:59
将大批量数据插入到数据库中,用preparedstatement.executeBatch();来做,
这样可以减少与数据库间的交互,
不仅仅只是单纯用addBatch()和executeBatch()就行了,还需要将conn.setAutoCommit(false),
这样关闭自动事务提交,也可以减少交互。
还需注意addBatch()到一定次数是要及时提交,否则容易发生内存溢满的问题。
try { String url = "jdbc:oracle:thin:@IP:1521:orcl"; // orcl为数据库的SID String user = "oracle"; String password = "oracle"; StringBuffer sql = new StringBuffer(); sql.append("insert into ex_log (EX_LOG_ID,EX_LOG_DATE) values (?,?)"); Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = (Connection) DriverManager.getConnection(url,user,password); // 关闭事务自动提交 con.setAutoCommit(false); final int batchSize = 10000; int count = 0; Long startTime = System.currentTimeMillis(); PreparedStatement pst = (PreparedStatement) con.prepareStatement(sql.toString()); for (int i = 0; i < list.size(); i++) { ExLog exLog = (ExLog)list.get(i); pst.setString(1, exLog.getExLogId()); pst.setString(2, exLog.getExLogDate()); // 把一个SQL命令加入命令列表 pst.addBatch(); if(++count % batchSize == 0 ){ pst.executeBatch(); count = 0; } } // 执行批量更新 pst.executeBatch(); // 语句执行完毕,提交本事务 con.commit(); Long endTime = System.currentTimeMillis(); System.out.println("用时:" + (endTime - startTime)); pst.close(); con.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }
阅读全文
0 0
- java 数据库批量插入
- java批量插入数据库之批量处理
- 数据库批量插入——java
- Java 批量插入数据库(MySQL)数据
- Java 批量插入数据库(MySQL)数据
- java 高效批量插入 sqlserver 数据库
- DataTable 批量插入数据库
- DataTable批量插入数据库
- Bulk 批量插入数据库
- 批量插入oracle数据库
- DataTable批量插入数据库
- DataTable批量插入数据库 .
- jdbc批量插入数据库
- 数据库批量插入
- 1.数据库批量插入
- 数据库批量插入
- 数据库批量插入数据
- 批量插入数据库
- 1067. 试密码
- C#二次开发C++的sdk时的指针使用
- 高中OJ5231. 【NOIP2017模拟A组模拟8.5】序列问题
- 利用NPOI操作excel导出
- scrapy的basic模板模拟登录、requests模拟登录
- java 数据库批量插入
- [python3.6 flask web学习]Flask模板引擎jinjia2
- IPSec VPN基本原理(图解)
- bzoj3675 [APIO2014] 序列分割(斜率优化)
- 利用caffe训练好的模型测试自己的手写字体图片
- Android集成FBReader(精简版)指南
- LogisticRegression Digital
- Git版本控制系统之基本使用
- Android onTouchEvent 随手指移动时的抖动