Deshacerse de filas duplicadas en una tabla de sql de oracle


Si está utilizando Oracle de Base de datos, un problema común es duplicar las filas de las tablas. Generalmente esto sucede cuando las únicas restricciones se eliminan durante la carga. Cualquiera que sea la razón, usted puede eliminar los registros duplicados. Registros duplicados tienen los mismos valores para todas las columnas (O las columnas que son parte de la clave única).

una Vez que hayas dominado la técnica que se describe en este artículo, te recomiendo revisar el Diseño de Base de datos de Recursos para saber más acerca de la buena base de datos de técnicas de normalización.

Hay más de una manera para eliminar los registros duplicados. Supongamos Table_A tiene los siguientes datos:

Col1 Col2
& & & & & & -
101 201
102 202
103 203
102 202
104 204
101 201

veamos el primer método.

  1. Copia de seguridad original de la tabla. Este es el paso más importante!
  2. asegúrese de que su copia de seguridad es buena y se puede restaurar la tabla original si es necesario.
  3. Aquí está el código para eliminar los registros duplicados:

    ELIMINAR DE Table_A
    DONDE ROWID != ( SELECT MAX(ROWID)
    DESDE Table_A b
    b.col1 = un.col1
    Y b.col2 = un.col2 )

    & nbsp

    Oracle tiene una pseudo columna ROWID', que es único para cada fila de una tabla. Así que podemos utilizar para eliminar los registros duplicados. El código anterior se observa que sólo una ROWID para no duplicar registros. Para los registros duplicados, que va a eliminar un registro con menor ROWID. Si hay más de dos columnas que forman la clave única de registro, entonces usted debe incluir todas las columnas en la condición where. Hay dos registros duplicados en el ejemplo de que no importa que el registro de eliminar ya que todas las columnas tienen los mismos valores.

  4. Comprobar tus resultados y se comprometen con su trabajo.

veamos Ahora un segundo método.

  1. Copia de seguridad original de la tabla. Este es el paso más importante!
  2. asegúrese de que su copia de seguridad es buena y se puede restaurar la tabla original si es necesario.
  3. Crear una tabla temporal con la única registros utilizando la cláusula DISTINCT.
  4. Eliminar todos los registros de la tabla original.
  5. Insertar todos los registros de la tabla temporal en la tabla original.
  6. Comprobar tus resultados y se comprometen con su trabajo.

Dependiendo de su situación, usted puede elegir uno de los dos métodos para obtener resultados más rápidos. Los registros duplicados se pueden prevenir mediante Índices Únicos. Los Índices únicos garantiza que las columnas en el índice de no tener valores duplicados.









Deshacerse de filas duplicadas en una tabla de sql de oracle


Deshacerse de filas duplicadas en una tabla de sql de oracle : Multi-millones de consejos para hacer su vida mas facil.


Si esta utilizando Oracle de Base de datos, un problema comun es duplicar las filas de las tablas. Generalmente esto sucede cuando las unicas restricciones se eliminan durante la carga. Cualquiera que sea la razon, usted puede eliminar los registros duplicados. Registros duplicados tienen los mismos valores para todas las columnas (O las columnas que son parte de la clave unica).

una Vez que hayas dominado la tecnica que se describe en este articulo, te recomiendo revisar el Diseño de Base de datos de Recursos para saber mas acerca de la buena base de datos de tecnicas de normalizacion.

Hay mas de una manera para eliminar los registros duplicados. Supongamos Table_A tiene los siguientes datos:

Col1 Col2
& & & & & & -
101 201
102 202
103 203
102 202
104 204
101 201

veamos el primer metodo.

  1. Copia de seguridad original de la tabla. Este es el paso mas importante!
  2. asegurese de que su copia de seguridad es buena y se puede restaurar la tabla original si es necesario.
  3. Aqui esta el codigo para eliminar los registros duplicados:

    ELIMINAR DE Table_A
    DONDE ROWID != ( SELECT MAX(ROWID)
    DESDE Table_A b
    b.col1 = un.col1
    Y b.col2 = un.col2 )

    & nbsp

    Oracle tiene una pseudo columna ROWID', que es unico para cada fila de una tabla. Asi que podemos utilizar para eliminar los registros duplicados. El codigo anterior se observa que solo una ROWID para no duplicar registros. Para los registros duplicados, que va a eliminar un registro con menor ROWID. Si hay mas de dos columnas que forman la clave unica de registro, entonces usted debe incluir todas las columnas en la condicion where. Hay dos registros duplicados en el ejemplo de que no importa que el registro de eliminar ya que todas las columnas tienen los mismos valores.

  4. Comprobar tus resultados y se comprometen con su trabajo.

veamos Ahora un segundo metodo.

  1. Copia de seguridad original de la tabla. Este es el paso mas importante!
  2. asegurese de que su copia de seguridad es buena y se puede restaurar la tabla original si es necesario.
  3. Crear una tabla temporal con la unica registros utilizando la clausula DISTINCT.
  4. Eliminar todos los registros de la tabla original.
  5. Insertar todos los registros de la tabla temporal en la tabla original.
  6. Comprobar tus resultados y se comprometen con su trabajo.

Dependiendo de su situacion, usted puede elegir uno de los dos metodos para obtener resultados mas rapidos. Los registros duplicados se pueden prevenir mediante Indices Unicos. Los Indices unicos garantiza que las columnas en el indice de no tener valores duplicados.


Deshacerse de filas duplicadas en una tabla de sql de oracle

Deshacerse de filas duplicadas en una tabla de sql de oracle : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación