J'ai un problème que je n'arrive pas à trouver la réponse. J'ai développé une très petite application de type CRM en PHP dirigée par MySQL. Les utilisateurs de cette application peuvent importer de nouvelles données dans la base de données via un fichier CSV téléchargé. L'un des problèmes que nous tentons de résoudre en ce moment est la duplication, ou, plus important encore, la proximité d'enregistrements en double. Par exemple, si je donne les résultats suivants:MySQL supprimer/combiner des lignes similaires
Record A: [1, Bob, Jones, Atlanta, GA, 30327, (404) 555-1234]
et
Record B: [2, Bobby, Jones, Atlanta, GA, 30327, Bob's Shoe Store, (404) 555-1234]
je besoin d'un moyen de voir que ceux-ci sont à la fois similaires, prenez le record avec plus d'informations (dans ce cas, dossier B) et supprimer l'enregistrement A.
Mais ici, c'est encore plus compliqué. Cela doit être fait lors de l'importation de nouvelles données, et une fonction que je peux exécuter pour supprimer les doublons de la base de données à tout moment. J'ai été capable de mettre quelque chose en PHP qui récupère toutes les lignes dupliquées de la table MySQL et les associe par numéro de téléphone, ou en utilisant implode() sur toutes les colonnes de la ligne puis en utilisant strlen() pour décider de l'enregistrement le plus long . Il doit y avoir une meilleure façon de faire, et une plus précise.
Est-ce que l'un d'entre vous a des suggestions brillantes que je pourrais être en mesure d'implémenter ou de développer? Il est évident que lors de l'importation de nouvelles données, je dois ouvrir leur fichier CSV dans un tableau ou une table MySQL temporaire, faire la recherche en double/similaire, puis recompiler le fichier CSV ou ajouter tout de la table temporaire à la table principale. Je pense. :)
J'espère que certains d'entre vous pourront signaler quelque chose qui me manquera peut-être évoluer assez décemment et c'est assez précis. Je préfère présenter une liste de doublons dont nous ne sommes pas sûrs à propos d'un utilisateur qui a 5 enregistrements de long, pas de 5 000.
Merci d'avance! Alex