【JAVA】oracle批量插入数据操作
来源:互联网 发布:中英文双语小说 软件 编辑:程序博客网 时间:2024/06/06 12:46
最近做的项目需要将大批量数据插入到数据库中,之前有印象用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】oracle批量插入数据操作
- java 批量插入数据(Oracle)
- java批量插入数据到Oracle
- Oracle批量插入数据
- oracle批量插入数据
- oracle批量插入数据
- 批量插入数据 Oracle
- oracle批量插入数据
- Oracle 批量插入数据
- java 批量插入数据
- Java批量插入数据
- Java批量插入数据
- Java批量插入数据
- 批量向oracle插入数据
- Oracle occi 批量插入数据
- Oracle occi 批量插入数据
- java oracle 批量插入 邪恶数字"65536",数据丢失问题
- Java实现Mybatis将数据批量插入到Oracle数据库
- DNS问题--解析问题
- 简易报告
- Hadoop平台上用Sqoop在Hive和DB2数据库之间传输数据的实践和总结
- 数据结构(13)线性表之C++实现一元多项式相减
- HDU 1698 Just a Hook(线段树)
- 【JAVA】oracle批量插入数据操作
- Intelij IDEA 快捷键(整理)
- 设计模式(六)代理模式
- Android_app启动时白屏_解决
- 对于拷贝构造函数和赋值构造函数的理解
- MyEclipse配置svn插件
- Java并发编程:synchronized
- 使用glew、glfw配置OpenGL开发环境
- Scala之主构造函数