点击此处---> 群内免费提供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以不同的方式处理批处理插入?
您使用什么版本的SAP HANA和jdbc驱动程序? 请将此信息添加到您的问题中。
您好Witalij,
我正在使用SAP HANA 2.0 SP3和ngdbc驱动程序2.3.53版
谢谢,
Asha
我已经更新了ngdbc.jar,现在使用的是最新版本2.4.67。 (以及更新的查询说明)
方案仍然是相同的,即,如果一条记录中的长字段数据错误,则一批中的所有记录都会失败,错误代码是-3而不是-2。
在主键违反一批记录的情况下,只有错误的记录会失败,返回值为-3,其余所有记录都将成功插入。
当我尝试为列插入大数据时,是否有任何方法可以实现与主键违反相同的行为,即仅失败记录失败并且成功插入了批次中的其余记录?
一周热门 更多>