当插入值对于列而言太大时,executeBatch()对于批处理中的所有记录返回-3

2020-08-25 22:48发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我正在尝试使用sap h...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我正在尝试使用sap hana db的jdbc驱动程序(版本-2.4.67)进行批量插入

演示代码如下

(我创建了ID为INTEGER的Employee表,它是主键,名称为VARCHAR(1))

字符串psBatchquery ="插入SYSTEM.Employee(id,name)值(?,?)

 batchPs = con.prepareStatement(psBatchquery);
 最终的int batchSize = 3;
 int count = 0;
 对于(int i = 0; i <8; i ++){
   如果(i == 2){
 batchPs.setInt(1,i);
 batchPs.setString(2,"名称" + i);
   }其他{
 batchPs.setInt(1,i);
 batchPs.setString(2," A");
   }
   batchPs.addBatch();
   如果(++ count%batchSize == 0){
   尝试{
     batchPs.executeBatch();
   } catch(BatchUpdateException be){
     int []失败= be.getUpdateCounts();
   }最后{
     计数= 0;
   }
   }
 }
 batchPs.executeBatch()

 

当我尝试只为一个记录(索引为2的记录)插入大数据时,fail [0],fail [1]和fail [2]都返回-3,这意味着不仅未插入故障记录 但也没有插入该批次的正确记录。

相反,当我执行主键冲突时,我将失败记录的int [i]设为-3,而对于同一批次的所有其他记录,则返回1,即成功

当我尝试为列插入大数据时,是否有任何方法可以实现与主键违规相同的行为,即仅失败记录失败并且成功插入了批次中的其余记录?

对于以上两种情况,为什么SAP HANA以不同的方式处理批处理插入?

3条回答
灬番茄
2020-08-25 23:19

您好Witalij,

我正在使用SAP HANA 2.0 SP3和ngdbc驱动程序2.3.53版

谢谢,
Asha

一周热门 更多>