2009-08-28 10 views
1

Je veux l'utiliser pour obtenir des données de la ligne de base de données MySQL en fichiers texte (une entrée sous une autre, 50 entrées par fichier):Est-ce que ce code supprime les doublons?

$ mysql --user=XXX --password=XXX --batch --skip-column-names \ 
-e "SELECT userid, displayname FROM Users" stackoverflowdb | \ 
split -l 50 -a 5 - "result." 

, mais je ne veux pas aussi copier des entrées en double à ces fichiers. Ce code supprimera-t-il les doublons ou dois-je ajouter quelque chose pour ne pas copier les doublons?

+0

Vous pensez à dupliquer les entrées dans la table des utilisateurs? –

+0

oui, je ne veux pas d'entrées en double à partir de là – Phil

Répondre

3

Modification du code SQL pour utiliser la directive DISTINCT

par exemple.

SELECT DISTINCT userid,displayname FROM Users 

garantira que seules des combinaisons uniques d'ID utilisateur et de nom d'affichage sont sélectionnées. Toutefois, cela n'empêchera pas les ID utilisateur ayant des noms d'affichage identiques.

+0

super, merci. upvoted. Je voulais juste m'assurer que ... les fichiers texte seront créés dans le répertoire i cd? – Phil

+1

Je pense que split les créera dans le répertoire de travail actuel par défaut, oui. – cms

+0

ok, je l'ai couru de cette façon et il semble fonctionner ... génial! xD – Phil

1
SELECT DISTINCT userid,displayname FROM Users 

.. ou en dehors de la base de données

mysql --user=XXX --password=XXX --batch --skip-column-names \ 
-e "SELECT userid, displayname FROM Users" stackoverflowdb | \ 
sort -u | \ 
split -l 50 -a 5 - "result." 
Questions connexes