暂无图片
id重复无法添加主键
我来答
分享
豆宇斯
2020-06-04
id重复无法添加主键

数据迁移的时候,用imp导入的同时目标库也在写入数据,导致出现了重复id,不能添加主键,同时由于存在多次导入,有部分数据包括id列完全一致

我来答
添加附件
收藏
分享
问题补充
11条回答
默认
最新
豆宇斯

id重复的数据有100多万条,总数据4千万左右,有什么办法能使完全一致的数据只保留一条,只有id相同的数据改成不同id么

暂无图片 评论
暂无图片 有用 0
文成

id如果是序列的话 就先将目标库的序列调大

暂无图片 评论
暂无图片 有用 0
文成

那就改成逻辑sql导入 提前做好规划

暂无图片 评论
暂无图片 有用 0
豆宇斯

现在是导入已经完成了,需要修改目标库数据使得可以添加主键

暂无图片 评论
暂无图片 有用 0
盖国强

如果要保证一致性:
停止业务,删除表数据,再导入数据,恢复业务。

如果不在乎存在重复数据:
删除约束,导入数据。手工校验。

暂无图片 评论
暂无图片 有用 0
豆宇斯

现在的情况是不能停业务,数据也已经导入完成,但是目标库没有建立约束,出现了重复数据,要把完全重复的数据只保留一条,只有id一样的修改成不同id

暂无图片 评论
暂无图片 有用 0
文成
select * from (
select id,row_number()over(partition by id order by null) rn from tab)
where rn>1

筛选出重复数据到临时表,编辑好了 再插入回来

暂无图片 评论
暂无图片 有用 0
田弼元

这个要看是不是允许重复。如果允许的话,删除约束,插入数据,然后在创建约束,创建时选择不校验已有数据。
如果不允许重复,就先停掉业务,然后进行去重。

暂无图片 评论
暂无图片 有用 0
豆宇斯

有的字段含有空值,row number over的方法好像判断不出来

暂无图片 评论
暂无图片 有用 0
文成

主键 id有空值?

暂无图片 评论
暂无图片 有用 0
豆宇斯

已经可以了,使用row number找到重复数据的rowid,直接update修改后可以加主键了,感谢感谢

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏