java 数据库批量插入
2017-08-08 16:27
176 查看
将大批量数据插入到数据库中,用preparedstatement.executeBatch();来做,
这样可以减少与数据库间的交互,
不仅仅只是单纯用addBatch()和executeBatch()就行了,还需要将conn.setAutoCommit(false),
这样关闭自动事务提交,也可以减少交互。
还需注意addBatch()到一定次数是要及时提交,否则容易发生内存溢满的问题。
这样可以减少与数据库间的交互,
不仅仅只是单纯用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(); }
相关文章推荐
- java(功能篇) java(mysql)数据库 实现数据批量插入
- Java豆瓣电影爬虫——减少与数据库交互实现批量插入
- java批量插入数据库之批量处理
- 【MySql】Java 批量插入数据库addBatch
- Java豆瓣电影爬虫——减少与数据库交互实现批量插入
- Java豆瓣电影爬虫——减少与数据库交互实现批量插入
- java jdbc连接各种数据库的方式大全 批量插入 存储过程调用
- java中不同的ORM框架实现对数据库批量插入数据库的方式与技巧
- Java 批量插入数据库(MySQL)数据
- Java 批量插入数据库(MySQL)数据
- Java豆瓣电影爬虫——减少与数据库交互实现批量插入
- java 高效批量插入 sqlserver 数据库
- Java 批量插入数据到数据库(MySQL)中
- Java在数据库操作中批量插入数据
- Java豆瓣电影爬虫——减少与数据库交互实现批量插入
- Java:批量插入、修改数据到数据库中的用法
- java批量插入数据进数据库中
- Java通过Mybatis实现批量插入数据到Oracle中
- Java - 批量插入用法(jdbcTemplate)
- 各种数据库的批量插入操作_Oracle