Maison > base de données > Oracle > Déduplication des données Oracle

Déduplication des données Oracle

王林
Libérer: 2023-05-18 10:03:08
original
1084 Les gens l'ont consulté

Dans les bases de données, les données en double sont souvent l'un des objets que nous devons supprimer. La base de données Oracle propose plusieurs façons de supprimer les données en double, et cet article en présentera plusieurs.

1. Utiliser des contraintes UNIQUE

Les contraintes UNIQUE sont un mécanisme utilisé par la base de données Oracle pour garantir que les colonnes de chaque table stockent des valeurs uniques. Si nous souhaitons supprimer les données en double dans la table, nous pouvons ajouter des contraintes UNIQUE sur les colonnes qui doivent être dédupliquées, puis insérer des données via l'instruction INSERT IGNORE ou REPLACE INTO. Lors de l'insertion, si des données en double sont trouvées, elles seront ignorées ou remplacées par de nouvelles données.

Par exemple, nous avons un tableau appelé étudiants, qui contient les numéros et noms des étudiants. Si nous voulons garantir l'unicité de la carte d'étudiant, nous pouvons utiliser l'instruction suivante :

ALTER TABLE students ADD CONSTRAINT unique_stu_id UNIQUE (stu_id);
Copier après la connexion

Dans cette instruction, nous ajoutons une contrainte UNIQUE à la table des étudiants pour garantir l'unicité des données dans la colonne stu_id.

2. Utiliser ROWID

ROWID est une colonne très spéciale dans la base de données Oracle, qui peut identifier de manière unique chaque ligne de données. Nous pouvons supprimer les données en double via ROWID. Voici un exemple d'utilisation de ROWID pour supprimer les données en double :

DELETE FROM students WHERE ROWID NOT IN (SELECT MAX (ROWID) FROM students GROUP BY stu_id, name);
Copier après la connexion

Dans cette instruction, nous utilisons une sous-requête pour trouver la ligne de données avec la plus grande valeur ROWID dans chaque combinaison stu_id et nom répétée, puis la conservons, supprimons le données restantes.

3. Utiliser des tables temporaires

L'utilisation de tables temporaires pour supprimer les données en double est une autre méthode fréquemment utilisée. Nous devons d'abord créer une table temporaire, puis insérer les données qui doivent être dédupliquées dans la table temporaire, puis supprimer les données de la table d'origine et enfin réinsérer les données de la table temporaire dans la table d'origine. Cette méthode peut garantir l’intégrité et la cohérence des données, mais elle prend plus de temps et d’espace.

Ce qui suit est un exemple d'utilisation d'une table temporaire pour supprimer les données en double :

CREATE TABLE students_new AS SELECT DISTINCT * FROM students;

TRUNCATE TABLE students;

INSERT INTO students SELECT * FROM students_new;

DROP TABLE students_new;
Copier après la connexion

Dans cette instruction, nous créons une table temporaire nommée Students_new, insérons les données dédupliquées de la table Students dans la table temporaire, puis effaçons les données. dans la table des étudiants, et enfin réinsérer les données de la table temporaire dans la table des étudiants pour terminer l'opération de déduplication.

4. Utilisation de CTE

CTE (Common Table Expression) est une méthode qui peut définir une table temporaire dans une instruction SQL. Grâce à CTE, nous pouvons terminer l'opération de déduplication des données en une seule instruction SQL. Voici un exemple d'utilisation de CTE pour supprimer les données en double :

WITH CTE AS (
  SELECT stu_id, name,
    ROW_NUMBER() OVER (PARTITION BY stu_id, name ORDER BY ROWID) RN
  FROM students
)
DELETE FROM CTE WHERE RN > 1;
Copier après la connexion

Dans cette instruction, nous utilisons le mot-clé WITH pour définir une table temporaire nommée CTE, puis utilisons la fonction ROW_NUMBER pour numéroter chaque ligne de données en fonction de stu_id et de son nom. , et enfin supprimez les données dont les numéros de ligne sont supérieurs à 1 pour terminer l'opération de déduplication.

Résumé

Les méthodes ci-dessus peuvent supprimer efficacement les données en double dans la base de données Oracle. La méthode à choisir dépend de la situation et des besoins réels. Par exemple, si nous voulons supprimer rapidement une petite quantité de données en double, nous pouvons utiliser la deuxième méthode ; si la quantité de données est importante, nous pouvons utiliser la troisième méthode ou la quatrième méthode. En bref, nous devons choisir la méthode la plus appropriée pour supprimer les données en double en fonction de la situation réelle, et nous devons effectuer une sauvegarde et des tests avant de supprimer les données afin d'éviter la perte de données et les erreurs opérationnelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal