问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 中怎么大批量的执行UPDATE语句

发布网友 发布时间:2022-04-07 21:29

我来回答

3个回答

懂视网 时间:2022-04-08 01:50

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

 

 

[转载]Oracle批量执行

标签:

热心网友 时间:2022-04-07 22:58

你可以写一个PLSQL命令块通过执行UPDATE命令
begin
for i in 1 .. 100000
loop
update a set a.1=x where a.2=i
if mod(i,5000)=0
then
commit;
end if;
end loop;
end;
/

热心网友 时间:2022-04-08 00:16

如果系统的数据结果设计的合理,update操作都有一定规律性的。批处理通常采用两种方法:
1、如果要修改的所有行的列、修改数据的来源、计算算法都一样、则一个Update语句就可以解决。
2、如果要修改的所有行的列、修改数据的来源、计算方法虽然不同,但有一定的规律,则采用游标来进行批量修改。
如果要修改的行、列、数据杂乱无章没有一定的规律,则只能一行一行修改了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
交通工程好考公务员吗 交通工程类考公时包括哪些专业 交通工程专业的能报考什么样的公务员 交通工程专业往哪些方向考公务员 交通工程可以考公务员有哪些岗位 我专业交通工程。能考什么类型的公务员 支付宝怎么关联另一个账号 支付宝怎么关联另一个支付宝 支付宝关联账号在哪里?怎么添加? 京东买手机发票可以开别人名字吗 什么网站好看电影 利欧股份会成为妖股吗 手机电池怎样放电? 怎么正确的给手机电池放电? 手机电池怎么放电 手机电池用久了如何放电? 广东省非师范类专科生,毕业以后想要教书,能考教师资格证吗?具体要做什么? 广东在校大二专科生可以报考2019年中小学教师资格证吗,急急急,明天就... 广东省教师资格证报名入口进不去是怎么回事? 钢化膜不好撕下来怎么办 广东2019大二大专可以考教师资格证吗? 贴过的钢化膜还能用吗 钢化膜撕起来一点点再贴合上去还可以使用使用嚒 买了一个钢化膜 没贴好撕下来重贴还有用么 新买的手机膜贴的不好拿下来还能继续用么 怎么在初中当扛把子。。。有经验的进。。。 一加手机系统一般占多大 不怕事的校园初一扛把子空间里的那个女的是谁 oracle存储过程批量执行 电脑的耳机接口和耳麦接口,能合二为一吗?买了一个二合一的耳机想在电脑上用? 盘点现在最好看的最热门的电影,【免费高清】在线观看百度网盘资源 鱼胶能与红枣同煮吗 现在什么电影最好看???可以看的,把网站给我 鱼胶的功效和吃法有哪些 最新最好看电影 鱼胶炖红枣有什么功效 鱼胶 红枣 枸杞 冰糖 合炖的功效 植物大战僵尸进不去怎么办 植物大战僵尸2为什么打不开? 用BlueStacks模拟器玩植物大战僵尸2,为什么打不开 steam植物大战僵尸打不开怎么解决? 植物大战僵尸2在手机上突然打不开 植物大战僵尸2关卡打不开??? 新加坡贵妇膏好不好 植物大战僵尸为什么打不开? 华为matepadpro上的植物大战僵尸2为什么打不开? beautyrest泊韵施的黄金贵妇膏怎么样,有用过的吗? Windows10怎么安装ps 九月初养颜贵妇膏怎么样? 农作物土生土长指的什么生肖