当前位置:Gxlcms > 数据库问题 > Oracle批量提交

Oracle批量提交

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

// 获取一个连接 2 Connection conn = null; 3 PreparedStatement pstm = null; 4 try { 5 conn = DBConnectionManager.getInstance().getConnection( 6 ConfigDef.DS_UPDATE_KEY); 7 conn.setAutoCommit(false); 8 // statement = conn.createStatement(); 9 Map<String, String> resultMap = collectResult.get(0); 10 //获取第一个 11 StringBuilder keyParams = new StringBuilder(); 12 StringBuilder valueParams = new StringBuilder(); 13 for (Map.Entry<String, String> entry : resultMap.entrySet()) { 14 keyParams.append(", ").append(entry.getKey()); 15 valueParams.append(", ? "); 16 } 17 String sqlTemplate = MessageFormat.format(SqlConstant.INSERT_SQL_TEMPLATE, new Object[]{"TB_BMP_SXAUDIT_DATA_TEMP",keyParams,valueParams}); 18 logger.info("sqlTemplate:"+ sqlTemplate); 19 pstm = conn.prepareStatement(sqlTemplate); 20 21 int len = collectResult.size(); 22 String uid = auditObject.getAuditObjectId()+"_"+ taskSeq; 23 for (int i = 0; i < len; i++) { 24 25 // 对于每一个结果,都要生成往临时表插入一条SQL语句 26 resultMap = collectResult.get(i); 27 //第一个参数是UID 28 pstm.setString(1, uid); 29 // 第2个参数是TASK_ID 30 pstm.setInt(2, taskInfo.getPlanId()); 31 // 第3个参数是BATCH_NO 32 Date batchNO = new Date(format.parse(receiveTask.getTaskStartTime()).getTime()); 33 System.out.println(batchNO); 34 pstm.setDate(3, batchNO); 35 //第4个参数是CollectID 36 pstm.setLong(4,Long.valueOf(auditObject.getAuditObjectId())); 37 // 第5个参数是TARGET_DB 38 pstm.setString(5, auditObject.getTargetDb()); 39 // 第8个参数是AUDIT_TIMES 40 pstm.setInt(6,1); 41 int idx = 7; 42 for (Map.Entry<String, String> entry : resultMap.entrySet()) { 43 pstm.setString(idx++, entry.getValue()); 44 } 45 pstm.addBatch(); 46 } 47 logger.info("开始执行批量提交"); 48 pstm.executeBatch(); 49 conn.commit(); 50 //等待任务执行成功,调用稽核存过 51 logger.info("开始调用存过");

 

Oracle批量提交

标签:

人气教程排行