Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Migration SGBD Discussion :

Migration clients et dé doublonnage


Sujet :

Migration SGBD

  1. #1
    Membre régulier
    Inscrit en
    décembre 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 256
    Points : 70
    Points
    70
    Par défaut Migration clients et dé doublonnage
    Bonjour,

    Nous voudrions migrer une base client (environ 130 000 comptes clients) sur une nouvelle base de données. L'ensemble sous SQL Server 2012.

    Par contre, avant d'effectuer cette migration, nous avons dans les 130 000 comptes clients énormément de doublons, voir des quadruples, des vingtuples et plus !

    Existe il une méthode permettant d'enlever tous ces doublons ? Actuellement nous essayons de dé doublonner par nom client + adresse + siret, puis par nom client + adresse puis par nom client.

    Le problème étant que nous pouvons avoir des clients avec le même nom mais dont l'adresse ou le siret est complètement différent. A ce moment là je pense, que ce sont les utilisateurs métier qui peuvent uniquement faire le tri.

    Merci d'avance

    Cordialement

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    janvier 2010
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : janvier 2010
    Messages : 5 447
    Points : 12 603
    Points
    12 603
    Par défaut
    Bonjour,

    Oui, il existe des méthodes pour dédoublonner. Mais il faut commencer par définir ce que sont les doublons.
    Donc il faut dans premier temps définir ce qu'est un doublon dans votre système, et ce que vous devez en faire.

  3. #3
    Membre régulier
    Inscrit en
    décembre 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 256
    Points : 70
    Points
    70
    Par défaut
    Nous avons identifié 3 types de doublons :

    • nom client + adresse + siret
    • nom client + adresse
    • nom client


    Le but étant de ne plus avoir de doublons.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    janvier 2010
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : janvier 2010
    Messages : 5 447
    Points : 12 603
    Points
    12 603
    Par défaut
    heu... donc on peut réduire tout ça à un seul type de doublon : les clients qui ont le même nom...

    Et que devez-vous en faire ?

  5. #5
    Membre régulier
    Inscrit en
    décembre 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 256
    Points : 70
    Points
    70
    Par défaut
    Peut être qu'avec un exemple sa sera plus facile :

    Soit les clients suivant avec son nom + adresse + siret :

    EDF 10 rue de la Villette 45263528996523
    EDF chemin du Nord 41256985423698
    E.D.F. 10 rue de la Villette 45263528996523
    EDF rue de Toto 41256398548965

    Le but étant d'avoir un seul client =>

    EDF 10 rue de la Villette 45263528996523

    Nous avions pensé faire une interface, sur laquelle l'utilisateur pourrais faire le tri dans les doublons, mais trier 130 000 clients c'est beaucoup trop long....

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    janvier 2010
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : janvier 2010
    Messages : 5 447
    Points : 12 603
    Points
    12 603
    Par défaut
    Donc vous voulez "fusionner" les clients qui aurait en commun l'une des propriétés [nom | adresse | siret] ?

  7. #7
    Membre régulier
    Inscrit en
    décembre 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 256
    Points : 70
    Points
    70
    Par défaut
    oui en faisant un script sql, par contre on proposerai à l'utilisateur ensuite une interface pour qu'il puisse vérifier si les données fusionnées sont juste

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    janvier 2010
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : janvier 2010
    Messages : 5 447
    Points : 12 603
    Points
    12 603
    Par défaut
    Citation Envoyé par exile69 Voir le message
    Le but étant d'avoir un seul client =>

    EDF 10 rue de la Villette 45263528996523
    Pourquoi celui-là et pas un des trois autres ?

  9. #9
    Membre régulier
    Inscrit en
    décembre 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 256
    Points : 70
    Points
    70
    Par défaut
    J'ai pris celui là mais j'aurais pu en prendre un autre, c'est l'utilisateur qui choisi quel client garder. Ensuite il décide si tel ou tel autre client correspond à celui qu'il a choisi en premier pour les fusionner.

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    janvier 2010
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : janvier 2010
    Messages : 5 447
    Points : 12 603
    Points
    12 603
    Par défaut
    vous pouvez partir d'une requête comme celle-ci, à affiner en fonction de vos besoins

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    SELECT *
    FROM Client C1
    INNER JOIN Client C2
        ON C2.id > C1.id
        AND (
            C2.nom = C1.nom
            OR C2.adresse = C1.adresse
            OR C2.siret= C1.siret
        )
    AND NOT EXISTS (
        SELECT 1
        FROM Client C3
        WHERE C3.id < C2.id
        AND (
            C2.nom = C3.nom
            OR C2.adresse = C3.adresse
            OR C2.siret= C3.siret
        )
    )

  11. #11
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    19 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 19 477
    Points : 46 228
    Points
    46 228
    Par défaut
    Citation Envoyé par exile69 Voir le message
    Bonjour,

    Nous voudrions migrer une base client (environ 130 000 comptes clients) sur une nouvelle base de données. L'ensemble sous SQL Server 2012.

    Par contre, avant d'effectuer cette migration, nous avons dans les 130 000 comptes clients énormément de doublons, voir des quadruples, des vingtuples et plus !

    Existe il une méthode permettant d'enlever tous ces doublons ? Actuellement nous essayons de dé doublonner par nom client + adresse + siret, puis par nom client + adresse puis par nom client.

    Le problème étant que nous pouvons avoir des clients avec le même nom mais dont l'adresse ou le siret est complètement différent. A ce moment là je pense, que ce sont les utilisateurs métier qui peuvent uniquement faire le tri.

    Merci d'avance

    Cordialement
    Votre problématique est ce que l'on appelle communément "identito-vigilance", c'est à dire faire en sorte de ne jamais créer des doublons sémantique par vigilance sur les données d'identification...
    Pour cela il faut un modèle de base de données répondant à cet objectif. par exemple pour les personnes (physiques ou morales, le modèle que j'ai donné pour une base dans le domaine de la santé pourrait bien s’adapter à votre problématique : http://blog.developpez.com/exercices-sql/p9438

    Pour vous aider dans cette migration, vous pouvez utilisez SSIS qui dispose d'algorithmes en logique flou destinés à rapprocher des données similaires. Il est cependant nécessaire d'établir un standard ce qui peut être faite pas différentes passes successives.

    Dans le même esprit, vous aurez sans doute besoin de fonction de rapprochement de motif capable de détecter le niveau de similitude de différentes chaines de caractères candidates.

    Regardez les fonctions que j'ai créé à cet effet, en lisant l'article que j'ai rédigé : http://sqlpro.developpez.com/cours/s...aisons-motifs/

    En particulier la fonction d’inférence basique donne de bon résultat rapidement. Certes le Levenshtein est plus pointu mais son aspect récursif le rend lent en pratique....

    A
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  12. #12
    Membre régulier
    Inscrit en
    décembre 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 256
    Points : 70
    Points
    70
    Par défaut
    Merci de ta réponse SQLPro, je vais regarder tout sa

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/01/2008, 09h05
  2. Réponses: 2
    Dernier message: 09/10/2007, 17h50
  3. Migration des 4D Clients 2004.4 en 2004.5
    Par kikinak dans le forum 4D
    Réponses: 4
    Dernier message: 06/12/2006, 18h18
  4. [PowerBuilder 10] Migration client/serveur -> web
    Par isabel01 dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 16/11/2006, 22h45
  5. Migration client Oracle et source PB pose soucis
    Par Doctor Z dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 28/07/2006, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo