logo
社区首页 / 全域数据集成平台 / 问题详情
标题
表字段类型为nvarchar且为主键,当该字段内容结尾有\u00a0 这种空格时,更新出错
0
用户头像
楼主:叶聿明
主题:2     回复:5     获赞:0 注册日期:2023-06-01

表字段类型为nvarchar且为主键,当该字段内容结尾有\u00a0 这种空格时,使用库表输出组件同步数据。该表内容为空时,第一次同步成功,后续同步均会失败。报错提示:违反了主键约束,不能在对象表中插入重复键。希望能修复,谢谢。

---------------------------------------------------
签名:
共8回答
0
用户头像
回答者: data01
获赞:2 注册于:2023-04-10 回答于 2023-06-10 15:05:29 #1

你选的是批量插入还是逐条更新?如果是批量插入就是重复的,如果是逐条更新还有这个问题我们就要测试下,再修复。

---------------------------------------------------
签名:我刚来,请多关照...
0
用户头像
回答者: 叶聿明
获赞:0 注册于:2023-06-01 回答于 2023-06-10 15:23:07 #2

感谢回复! 是选的逐条更新。这个问题我反复测试了好久,第一次同步过来的是带空格的数据,后续同步的时候感觉是判断数据是否存在时把空格忽略掉了,导致本来应该是更新数据变成了插入数据,而插入的又是带空格的数据,造成了主键重复。

---------------------------------------------------
签名:
0
用户头像
回答者: data01
获赞:2 注册于:2023-04-10 回答于 2023-06-10 15:24:57 #3

好的,我们本地测试下,有问题的话会第一时间修复

---------------------------------------------------
签名:我刚来,请多关照...
0
用户头像
回答者: 管理员
获赞:142 注册于:2017-07-02 回答于 2023-06-10 18:50:28 #4

图片alt

mysql中 nvarchar 类型 不管增加空格 还是增加 \u00a0 都是正常的

你用的是什么数据库? 源和目标分别是什么数据库? 可以发一下.

---------------------------------------------------
签名:我是一个码农...
0
用户头像
回答者: 叶聿明
获赞:0 注册于:2023-06-01 回答于 2023-06-10 20:22:21 #5

源和目标的数据库都是sqlserver2008企业版。 \u00a0不是常见的空格,直接用键盘打的空格不能触发这个bug。 可以用这里面的工具 https://www.sojson.com/ascii.html 把ASCII码转换成空格再测试。

---------------------------------------------------
签名:
0
用户头像
回答者: 管理员
获赞:142 注册于:2017-07-02 回答于 2023-06-11 11:18:15 #6

确实有这个问题,sql条件无法识别ascii码的字符作为判断条件 只能把源数据读取的时候绑定一个规则把这个ascii码清理掉,主键不能保留这个字符.

---------------------------------------------------
签名:我是一个码农...
0
用户头像
回答者: 管理员
获赞:142 注册于:2017-07-02 回答于 2023-06-11 13:24:44 #7

新开发了一个规则专门用于清理字段两端的ASCII字符,可以下载这个规则.

https://www.etlcloud.cn/restcloud/view/page/details.html?id=648558493cc0637c30c98c8f&type=3

---------------------------------------------------
签名:我是一个码农...
0
用户头像
回答者: 叶聿明
获赞:0 注册于:2023-06-01 回答于 2023-06-11 13:50:50 #8

好的,感谢。

---------------------------------------------------
签名: