FROM: http://www.cnblogs.com/wangyayun/p/4514411.html

//批量添加20000条数据用时8秒。
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); 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();
}
// 执行批量更新
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();
}
-------------------------------------------------------------------------------------
下面是我的实例
        Connection conn = null;
PreparedStatement stmt = null; StringBuffer sql = new StringBuffer();
sql.append("merge into DEEPDATA.WARNING_MES t1 ");
sql.append("using (select ? as CUSTOMER_ID,? as added,? as integrated_risk,? as inner_risk,? as industry_risk,? as region_risk from dual) t2 ");
sql.append("on (t1.CUSTOMER_ID=t2.CUSTOMER_ID) ");
sql.append("when matched then ");
sql.append("update set ");
sql.append("t1.added = t2.added,t1.integrated_risk = t2.integrated_risk,t1.INNER_RISK = t2.INNER_RISK,t1.industry_risk = t2.industry_risk,t1.region_risk = t2.region_risk ");
sql.append("when not matched then ");
sql.append("insert (t1.CUSTOMER_ID,t1.added,t1.integrated_risk,t1.INNER_RISK,t1.industry_risk ,t1.region_risk) ");
sql.append("values(t2.CUSTOMER_ID,t2.added,t2.integrated_risk,t2.INNER_RISK,t2.industry_risk ,t2.region_risk)"); try {
conn = DriverManager.getConnection(url, dbUser, dbPassword);
// 关闭自动提交;
conn.setAutoCommit(false);
stmt = conn.prepareStatement(sql.toString()); Timestamp timestamp = Timestamp.valueOf(GetDate
.getTodayDate_FullFormat()); if (result != null && result.size() > 0) {
double tmpValue;
for (Map<String, Object> map : result) {
tmpValue = Double.parseDouble(map.get(
ConstValue.IntegratedRisk).toString());
if (specialHandle.contains(map.get("id").toString())) {
tmpValue = tmpValue * 1.72;
} stmt.setInt(1, Integer.parseInt(map.get("id").toString()));
stmt.setTimestamp(2, timestamp);
stmt.setDouble(3, tmpValue);
stmt.setDouble(4, Double.parseDouble(map.get(
ConstValue.InnerRisk).toString()));
stmt.setDouble(5, Double.parseDouble(map.get(
ConstValue.IndustryRisk).toString()));
stmt.setDouble(6, Double.parseDouble(map.get(
ConstValue.RegionRisk).toString()));
stmt.addBatch();
}
stmt.executeBatch();
conn.commit();
} stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}

最新文章

  1. NET Core-学习笔记(一)
  2. app开发遇到问题及解决
  3. php memcache扩展 出现错误dyld: Symbol not found: _mmc_queue_free
  4. CI框架源码阅读笔记4 引导文件CodeIgniter.php
  5. JavaScript 对象 之创建对象 学习笔记
  6. 树状数组求逆序对:POJ 2299、3067
  7. 内省与JavaBean
  8. Css3 圆角和渐变色问题(IE9)
  9. ubunt下的MinimalCD
  10. Tomcat详细用法学习(二)
  11. 异步编程(Async和Await)的使用
  12. C# 添加敏感词
  13. 201521123003《Java程序设计》第2周学习总结
  14. angular之表单验证与ngMessages
  15. 用eclipes写第一个HelloWorld
  16. 详解MySQL数据类型
  17. Linux虚拟机部署单机solr报错500解决方法之一
  18. Android开发 - 掌握ConstraintLayout(十)按比例设置视图大小
  19. 跟随我在oracle学习php(2)
  20. NTFS(Windows)、ext4(RHEL6)和xfs(RHEL7)文件系统的误删除恢复和备份

热门文章

  1. POJ1258 (最小生成树prim)
  2. python基础===map和zip的用法
  3. [ 总结 ] nginx 编译参数中文详解
  4. Day 14 python 之 字符串练习
  5. 《锋利的JQuery》读书要点笔记4——表格表单的操作
  6. python基础之程序交互与数据类型
  7. python multiprocessing多进程模块
  8. MATLAB中的积分运算
  9. [libgdx游戏开发教程]使用Libgdx进行游戏开发(8)-粒子系统
  10. Lock wait timeout exceeded数据库死锁问题