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

2020-08-25 22:48发布

         点击此处--->   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以不同的方式处理批处理插入?

         点击此处--->   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条回答
悠然的二货
1楼-- · 2020-08-25 23:41

您使用什么版本的SAP HANA和jdbc驱动程序? 请将此信息添加到您的问题中。

灬番茄
2楼-- · 2020-08-25 23:19

您好Witalij,

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

谢谢,
Asha

Nan4612
3楼-- · 2020-08-25 23:21

我已经更新了ngdbc.jar,现在使用的是最新版本2.4.67。 (以及更新的查询说明)

方案仍然是相同的,即,如果一条记录中的长字段数据错误,则一批中的所有记录都会失败,错误代码是-3而不是-2。

在主键违反一批记录的情况下,只有错误的记录会失败,返回值为-3,其余所有记录都将成功插入。

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

一周热门 更多>