2012-12-07 3 views
0

J'ai 2 bases de données égales (A et B) avec une table chacune s'exécutant dans des machines hors ligne distinctes.insérer et exclure les doublons dans mysql

Chaque jour, j'exporte leurs données (en tant que csv) et les "fusionne" dans une 3ème base de données (C). Je commence par traiter A, puis B (j'insère le contenu de A à C, puis le contenu de B à C)

Maintenant, il peut arriver que j'obtienne des lignes dupliquées. Je considère un doublon si un champ, par exemple "mail" existe déjà. Je me fiche que le reste des champs soit le même.

Comment puis-je insérer A et B dans C à l'exclusion des lignes qui sont des doublons?

Merci d'avance!

Répondre

1

solution la plus simple devrait être de créer un index unique sur les colonnes en question et lancer la deuxième insert comme INSERT IGNORE

+0

vous aviez raison! C'était la solution la plus simple –

0

Personnellement, j'utiliser la ON DUPLICATE KEY UPDATE que l'utilisation INSERT IGNORE provoque des erreurs à thrown as warnings.

Cela peut avoir des effets secondaires et entraîner un comportement auquel vous ne vous attendez pas. Voir this post pour plus de détails sur certains des effets secondaires. Si vous utilisez la syntaxe ON DUPLICATE KEY UPDATE, cela vous permettra également de modifier votre logique pour mettre à jour des champs spécifiques avec de nouvelles données si les besoins métier changent. Par exemple, vous pouvez indiquer le nombre de fois qu'un enregistrement en double a été inséré en indiquant ON DUPLICATE KEY UPDATE quantity = quantity+1.

La publication mentionnée ci-dessus contient une tonne d'informations supplémentaires.