您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

oracle 删除大表内的重复数据

2024/3/15 9:01:51发布24次查看
因为一些原因数据库中的一张表(2kw+数据)没有建立主键,并且随着时间的增加产生了大量的重复数据,我通过以下方式进行数据去重: 原理:即使是所有业务字段都一样的两条数据他的rowid也是不一样的。 首先按照业务要求找出哪些字段重复的算重复数据,我是这
因为一些原因数据库中的一张表(2kw+数据)没有建立主键,并且随着时间的增加产生了大量的重复数据,我通过以下方式进行数据去重:
原理:即使是所有业务字段都一样的两条数据他的rowid也是不一样的。
首先按照业务要求找出哪些字段重复的算重复数据,我是这样的,以下字段全部一致就认为是重复数据: hphm,hpzl,wfsj,wfxw,jszh
表名:violation_use
此表为分区表,查此表分区详情:
select * from user_tab_partitions where table_name =’violation_use’;
查询表使用的分区
可以看到此表有10个分区:sys_p51 – sys_p60;
查询重复数据里的最大的rowid,然后删除rowid 在里面的数据,因为是分区表所以可以分区操作,否则时间会非常长(ps我在服务器上操作一晚上也没成功):
delete from violation_use partition(sys_p51) where rowid in (select rid from (select max(rowid) rid,count(*)from violation_usegroup by hphm,hpzl,wfsj,wfxw,jszhhaving count(*)>1) );
重复执行直到删除所有重复数据。
原文地址:oracle 删除大表内的重复数据, 感谢原作者分享。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product