Page 1 sur 1

utilisation phpmyadmin, plus de doublons

Posté : 07 févr. 2007, 20:02
par beve
bonjour j'ai une table avec environ 300 000 inscrits...
il y a des doublons en pagaille...
comment puis je faire pour les supprimer ?

y a t'il une commande dans phpMyAdmin ?
ou y a t'il un fonction php qui puisse traiter autant de données ?

merci bcp

Posté : 07 févr. 2007, 21:07
par Cyrano
Une fonction non, mais une idée :
crée une table temporaire semblable à l'originale; ensuite, fais une requête avec un INSERT ... SELECT DISTINCT() pour isoler les données sans doublons depuis la table originale pour peupler la table temporaire.

Ensuite, vide la table originale, et transfère le contenu de la table temporaire vers l'originale avant de supprimer la temporaire.

Posté : 07 févr. 2007, 22:21
par beve
hum,
j'avais pensez à ça...

mais... sur 300000 entrées... c pas trop gros a gerer pour php ?
merci

Posté : 07 févr. 2007, 22:37
par Jules Petibidon
hello,

tu peux essayer d'ajouter une contrainte d'unicité sur ta table. c'est bien bourrin mais ca devrait faire un grand nettoyage.

Posté : 07 févr. 2007, 22:41
par Ajoloca
Bonjour,

phpMyAdmin te permet de faire du SQL directement, fait-le donc en SQL.

Ce type de manipulations doit être fait sous contrôle, s'assurer que tout est correct avant de décider de supprimer les données d'une table.

D'un autre coté, n'oublie pas la remarque de Jules Petibidon une fois que te données seront correctes dans ta base.

P,S. :
300.000 Lignes pour MySQL c'est au grand maximum quelques secondes de traitement.

Posté : 07 févr. 2007, 22:55
par beve
merci bcp pour votre aide je vais m'y coller ce soir ;)

Posté : 08 févr. 2007, 09:20
par Ryle
hello,

tu peux essayer d'ajouter une contrainte d'unicité sur ta table. c'est bien bourrin mais ca devrait faire un grand nettoyage.
J'ai jamais essayé avec mysql, mais normalement, si tu essaye d'ajouter la contrainte d'unicité "après", les autres sgbd t'envoient promener en te disant qu'ils ne peuvent pas le faire car certains enregistrements existent en double. C'est à toi de faire le ménage au préalable :)

Par contre effectivement, un INSERT FROM SELECT vers une autre table, ça se fait très bien ;)