Oracle删除重复数据
在对数据库进行操作过程中我们可能会遇到这种情况,表中的数据可能重复出现,使我们对数据库的操作过程中带来很多的不便,那么怎么删除这些重复没有用的数据呢?
重复数据删除技术可以提供更大的备份容量,实现更长时间的数据保留,还能实现备份数据的持续验证,提高数据恢复服务水平,方便实现数据容灾等。 重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样。Oracle数据库重复数据删除技术有如下优势:更大的备份容量、数据能得到持续验证、有更高的数据恢复服务水平、方便实现备份数据的容灾。
一、删除部分字段重复数据
先来谈谈如何查询重复的数据吧。
下面语句可以查询出那些数据是重复的:
Sql代码
select 字段1,字段2,count(*)
from 表名 group by 字段1,字段2
having count(*) > 1
select 字段1,字段2,count(*)
from 表名 group by 字段1,字段2
having count(*) > 1
将上面的>号改为=号就可以查询出没有重复的数据了。
想要删除这些重复的数据,可以使用下面语句进行删除
Sql代码
delete from 表名 a where 字段1,字段2 in
(select 字段1,字段2,count(*)
from 表名
group by 字段1,字段2
having count(*) > 1)
delete from 表名 a where 字段1,字段2 in
(select 字段1,字段2,count(*)
from 表名
group by 字段1,字段2
having count(*) > 1)
上面的语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。所以我建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:
Sql代码
CREATE TABLE 临时表 AS
(select 字段1,字段2,count(*)
from 表名
group by 字段1,字段2
having count(*) > 1)
CREATE TABLE 临时表 AS
(select 字段
相关文档:
1、使用oracle用户登录,连接数据库
[oracle@wuzj ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Feb 26 12:06:29 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
//查看用户
SQL> select username,password from dba_users;
......
修改列属性
alter table tablename modify(name ,varchar2(10)) 列宽度不得小于修改前的宽度
日志管理
视图 v$logfile
alter database add logfile 'd:\orcl01.log' size 10m;//添加组
alter database add logfile member 'd:\orcl02.log' to group 4;//向4组中添加成员
alter database drop logfile member 'd: ......
经常用到的数据库导入导出,每次用都要查询,把语句保留在这边方便以后查阅
//快速导入数据到另一个数据库的语句
例如:
imp tms/tms@TMS_192.168.0.104 file=c:\1.dmp buffer=30720 show=no ignore=yes grants=yes rows=yes full=yes
路径为Oracle路径
imp tms/tms@TMS file=d:\tmsbf_all.dmp buffer=30720 show=no ......
1. 设置页面显示总行数
1) 查看目前的pagesize,默认是14:
Sqlplus代码
1. show pagesize;
show pagesize;
2) 将pagesize设置好100,则可以一次显示够多行记录了:
Sqlplus代码
1. set pagesize 1 ......
2010年5月25日 富士康11跳楼自杀的这天。传闻oracle 10g r203自动分析作业不是很靠谱,具体为什么不得而知!今天老库的机器要被搬走,看到上面有个目录是DBA导数据而用的,还留着老库迁到新库的DMP数据文件309G。想老库真正用到的表比较少,数据量会小很多。为了知道具体量,所以自己试玩下EXP导数据。先试了下用户表590万1. ......