2009-12-29 9 views
0

Je travaille donc sur un projet PHP qui doit permettre à l'utilisateur d'importer des fichiers CSV dans MySQL. Les fichiers CSV contiennent une "colonne" avec un identifiant unique ... il y a des doublons. Voici où la partie délicate entre en jeu ... Les doublons doivent aller dans une table séparée et non dans la table principale.PHP, MySQL CSV Import - Comment voulez-vous faire cela?

J'ai écrit du code pour cela, mais il doit y avoir un moyen plus efficace ... En ce moment, le script lit le fichier CSV et interroge la ligne pour voir si l'ID existe déjà, puis le place dans la bonne table. Ces fichiers CSV contiennent 50k + lignes chacun, donc cela prend beaucoup de temps ...

Une idée serait géniale! Merci!

+2

Le conseil est le même que la dernière fois que vous avez demandé: http://stackoverflow.com/questions/1965001/mysql-duplicates-with-load-data-infile –

Répondre

2

Bulk charger le fichier CSV dans MySQL, puis exécuter une requête avec GROUP BY id HAVING COUNT(id) > 1 et retirer ces lignes.

0

Assurez-vous que votre table MySQL est configuré pour ne pas accepter les valeurs en double pour la colonne ID, puis procédez comme suit:

  1. Exécutez votre déclaration INSERT comme si l'ID n'existe pas
  2. test le retour . Il échouera si l'ID existe déjà
  3. Si le test a échoué, exécutez une nouvelle déclaration INSERT pour mettre les choses dans votre deuxième table

De cette façon, si 98% de vos dossiers ne sont pas des doublons, vous ne verra aucune diminution de vitesse, et seuls les quelques doublons exécuteront les tests supplémentaires.