当前位置:Gxlcms > 数据库问题 > [转载]Oracle批量执行

[转载]Oracle批量执行

时间:2021-07-01 10:21:17 帮助过:6人阅读

批量添加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(); }

 


------------------------------------------------------------------------------------- 下面是我的实例
  1. Connection conn = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  2. PreparedStatement stmt </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  3. StringBuffer sql </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuffer();
  4. sql.append(</span>"merge into DEEPDATA.WARNING_MES t1 "<span style="color: #000000;">);
  5. sql.append(</span>"using (select ? as CUSTOMER_ID,? as added,? as integrated_risk,? as inner_risk,? as industry_risk,? as region_risk from dual) t2 "<span style="color: #000000;">);
  6. sql.append(</span>"on (t1.CUSTOMER_ID=t2.CUSTOMER_ID) "<span style="color: #000000;">);
  7. sql.append(</span>"when matched then "<span style="color: #000000;">);
  8. sql.append(</span>"update set "<span style="color: #000000;">);
  9. sql.append(</span>"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 "<span style="color: #000000;">);
  10. sql.append(</span>"when not matched then "<span style="color: #000000;">);
  11. sql.append(</span>"insert (t1.CUSTOMER_ID,t1.added,t1.integrated_risk,t1.INNER_RISK,t1.industry_risk ,t1.region_risk) "<span style="color: #000000;">);
  12. sql.append(</span>"values(t2.CUSTOMER_ID,t2.added,t2.integrated_risk,t2.INNER_RISK,t2.industry_risk ,t2.region_risk)"<span style="color: #000000;">);
  13. </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
  14. conn </span>=<span style="color: #000000;"> DriverManager.getConnection(url, dbUser, dbPassword);
  15. </span><span style="color: #008000;">//</span><span style="color: #008000;"> 关闭自动提交;</span>
  16. conn.setAutoCommit(<span style="color: #0000ff;">false</span><span style="color: #000000;">);
  17. stmt </span>=<span style="color: #000000;"> conn.prepareStatement(sql.toString());
  18. Timestamp timestamp </span>=<span style="color: #000000;"> Timestamp.valueOf(GetDate
  19. .getTodayDate_FullFormat());
  20. </span><span style="color: #0000ff;">if</span> (result != <span style="color: #0000ff;">null</span> && result.size() > 0<span style="color: #000000;">) {
  21. </span><span style="color: #0000ff;">double</span><span style="color: #000000;"> tmpValue;
  22. </span><span style="color: #0000ff;">for</span> (Map<String, Object><span style="color: #000000;"> map : result) {
  23. tmpValue </span>=<span style="color: #000000;"> Double.parseDouble(map.get(
  24. ConstValue.IntegratedRisk).toString());
  25. </span><span style="color: #0000ff;">if</span> (specialHandle.contains(map.get("id"<span style="color: #000000;">).toString())) {
  26. tmpValue </span>= tmpValue * 1.72<span style="color: #000000;">;
  27. }
  28. stmt.setInt(</span>1, Integer.parseInt(map.get("id"<span style="color: #000000;">).toString()));
  29. stmt.setTimestamp(</span>2<span style="color: #000000;">, timestamp);
  30. stmt.setDouble(</span>3<span style="color: #000000;">, tmpValue);
  31. stmt.setDouble(</span>4<span style="color: #000000;">, Double.parseDouble(map.get(
  32. ConstValue.InnerRisk).toString()));
  33. stmt.setDouble(</span>5<span style="color: #000000;">, Double.parseDouble(map.get(
  34. ConstValue.IndustryRisk).toString()));
  35. stmt.setDouble(</span>6<span style="color: #000000;">, Double.parseDouble(map.get(
  36. ConstValue.RegionRisk).toString()));
  37. stmt.addBatch();
  38. }
  39. stmt.executeBatch();
  40. conn.commit();
  41. }
  42. stmt.close();
  43. conn.close();
  44. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
  45. e.printStackTrace();
  46. }</span>

 

 

[转载]Oracle批量执行

标签:

人气教程排行