oracle 删除有大量重复数据且数据量很大的表且该表存在主键被引用的情况下清除重复数据...

1 先将需要保留的数据保存下来放入临时表 USERCOMPANYINFO_tmp

create table USERCOMPANYINFO_tmp as (
select * from USERCOMPANYINFO where rowid not in (SELECT A.ROWID FROM USERCOMPANYINFO A,(SELECT MAX(A.ROWID) RROWID,COMPANY FROM USERCOMPANYINFO A GROUP BY A.COMPANY HAVING COUNT(*) > 3) B
WHERE A.COMPANY = B.COMPANY AND A.ROWID <> B.RROWID))


2 当表中的主键被其他表参照时,需要执行下面语句 不然会报错:
 ORA-02266: unique/primary keys in table referenced by enabled foreign keys
ORA-02266: 表中的唯一/主键被启用的外部关键字引用


alter table USERCOMPANYINFO disable primary key cascade; //清除外部引用

3
truncate table USERCOMPANYINFO;//清空数据

4
insert into USERCOMPANYINFO select * from USERCOMPANYINFO_tmp; //蒋临时表中的数据倒入目标数据表
5
alter table USERCOMPANYINFO enable primary key; //给目标数据表添加主键约束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

annan211

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值