Import data depuis SQL : Suppression doublons

Étiquetté : 

  • Import data depuis SQL : Suppression doublons

    Posté par StevannS sur 4 octobre 2023 à 13h55

    Bonjour, je récupère la BDD SQL country depuis powerBI et je dois supprimer les doublons. Je souhaite le faire dans SQL et je me demande quelle méthode est la plus pertinente ? :

    • Méthode 1 : pb = je supprime des données dans la BDD d’origine…

    DELETE FROM country c1nINNER JOIN country c2ntON c1.country_name = c2.country_namentAND c1.capital_city = c2.capital_citynWHERE c1.id < c2.id ;
    • Méthode 2 : je crée une nouvelle table et je garde les données d’origine

    CREATE TABLE new_country ASnSELECT DISTINCT country_name, capital_citynFROM country ;

    Méthode 3 : création d’une table temporaire mais données non gardées en mémoire…

    WITH country_tempnAS (n   SELECT idn   ROW_NUMBER() OVER(PARTITION BY country_name, capital_city) AS rownumn   FROM countryn);
    DELETE FROM countrynWHERE id IN (n   SELECT id // sous-requête sélectionnant les enregistrements rownum >1n   FROM country_tempn   WHERE rownum >1n);

    Peut être y a-t-il une autre méthode ? Merci d’avance !

    PostID=i0Cf90Xqr6wwz82

    ypicot a répondu Il y a 11 mois, 4 semaines 1 Membre · 3 Réponses
  • 3 Réponses
  • ypicot

    Membre
    4 octobre 2023 à 14h43

    Bonjour

    Tout est une question de contexte. Je suppose que tu as tous les droits sur la BdD (sinon tu ne parlerai pas de supprimer des enregs ou créer une table).

    • la table est mise à jour peu fréquemment (voire quasiment jamais, ce qui semble être le cas ici) : la solution 1 est la plus simple. Lors de la maintenance, personne n’aura à se poser la question de l’utilité de deux tables “country”.

    • Tu tiens à garder un historique des données (ou bien la table est mise à jour régulièrement) : tu peux créer une vue qui fait le DISTINCT. A noter que si la table source est mise à jour, tu n’as rien à faire (et ça, c’est cooooool). Si je comprends bien la volumétrie de tes données, ce n’est pas cette vue qui va mettre ton serveur à genoux.

    CommentID=s5gW1QhaXNHSOBI, PostID=i0Cf90Xqr6wwz82

  • StevannS

    Membre
    5 octobre 2023 à 13h00

    Merci Ypicot. En fait il s’agit d’un exemple mais je fais face à des tables statiques et dynamiques. Donc, je suppose qu’en statique, la meilleure solution est la 1. En revanche, en dynamique, la meilleure est la solution 2 à partir d’une vue créée (je pars du principe que je n’ai pas les droits sur la table qui s’incrémente). La solution 3 est donc Out…

    S’agissant de la taille de la BDD, dans le présent cas, je n’ai pas beaucoup de données… En revanche, si tel est le cas, existe t-il un seuil critique de datas ? Merci…

    CommentID=IIpkvsowrScMQIt, PostID=i0Cf90Xqr6wwz82

  • ypicot

    Membre
    6 octobre 2023 à 18h25

    Perso, j’ai tendance à me méfier des “données qui ne changent jamais”.

    L’exemple classique, celui des civilités.

    Ben oui, c’est toujours Monsieur, Madame ou Mademoiselle, non ?

    Ha ben non, Mademoiselle n’existe plus.

    Et accessoirement, quelle est la civilité pour un notaire ? Ha ben m…, ou l’avait oublié celui-là 😉

    CommentID=DaQAvvzyC6XO6ex, PostID=i0Cf90Xqr6wwz82

Connectez-vous pour répondre.