jueves, 13 de agosto de 2009

Eliminar registros duplicados

Si por algún motivo insertaron registros duplicados de una tabla, ya sea porque han eliminado la clave primaria o ni siquiera la han creado y ahora la consideran necesaria; por aquí les dejo una sentencia que los puede ayudar a eliminar esos registros innecesarios:

delete from tabla
where rowid not in
(select min(rowid)
from tabla
group by (col_pk1, col_pk2, col_pk3...);


Donde tabla indica la tabla en cuestión y las col_pkn son las columnas que forman la primary key.

6 comentarios:

  1. Lo realiza, pero me he encontrado con un problemilla, si están duplicados más de una vez, no elimina todos...

    Alguna idea?

    http://www.vertutoriales.com

    ResponderEliminar
  2. Pues ahora si lo ha hecho bien :S

    Gracias de todas formas :D

    ResponderEliminar
  3. Muy bueno ami me sirvio un monton, esos si creo que le falto un parentesis

    ResponderEliminar
  4. Holas amigos soy nuevo en el estudio de Oracle y quisiera su ayuda.
    Tengo oracle 11.2 en windows 7 64bits.
    he creado dos instancias osea una llamada orcl y orcl2 y estoy tranatando de realizar un EXPDP para trasladar un tablespaces (datafile)lo que he realizado es lo siguiente:
    c:EXPDP sys/manager TRANPORT_TABLESPACES=T1;
    Este me crea el archivo EXPDAT.DMP en la ruta: C:\app\Evandro\admin\orcl\dpdump\

    y para importarlo:
    c:IMPDP sys/manager DUMPFILE=EXPDAT.DMP TRANSPORT_DATAFILES='C:\app\Evandro\oradata\orcl\T1.DBF'
    Esta ejecucion me recupera el DATAFILE en la misma bd orcl, mi pregunta es como hacer para importar el DATAFILE a la bd orcl2.

    Mil Gracias, por su Ayuda

    ResponderEliminar
  5. Bien, por lo que veo parece ser que tu ambiente sigue apuntando a la instancia ORCL cuando realizas el expdp.
    Intenta lo siguiente, una vez hecho el expdp, cambia la variable de entorno ORACLE_SID a ORCL2, y luego ejecuta el impdp.
    Para cambiar ORACLE_SID:
    set ORACLE_SID=orcl2
    Gracias por tu comentario.

    ResponderEliminar
  6. muchas gracias, era justo lo que necesitaba :D

    ResponderEliminar