2009-07-11 7 views
12

Je cherche une liste de mots du dictionnaire anglais pour une application de mot de passe que je travaille dessus. Idéalement, la liste peut être facilement insérée dans une base de données mysql. Des suggestions?Base de données MySQL de mots anglais?

Répondre

21

La plupart des systèmes Unix ont un ensemble de listes de mots, dans mon système Ubuntu, il est sur/usr/share/dict/american-anglais

Un seul mot vient par ligne, il est donc facile d'insérer si vous avez vraiment Je le veux dans une base de données.

Ce bash oneliner le fait inefficacement:

cat /usr/share/dict/american-english \ 
    | while read i; do echo insert into wordlist\(word\) VALUES \(\"$i\"\); done \ 
    | mysql -u<user> -p<pass> <db> 

Cette commande MySQL fait efficacement (si le fichier est dans la même machine):

LOAD DATA LOCAL INFILE '/usr/share/dict/american-english' INTO TABLE wordlist; 
+0

Mon système a aussi un fichier appelé 'cracklib-small' dans'/usr/share/dict/'. Il contient 53k mots alors que le fichier anglais américain a 99k mots. Alors que cracklib est plus petit, le fichier anglais contient des mots comme 'émigré' qui seraient terribles pour les mots de passe, donc si l'objectif est la génération de mot de passe style diceware, vous pouvez utiliser le dictionnaire cracklib à la place. – Nick

19

Pour importer une liste de mots à MySQL, utiliser

words est une table à une seule colonne.

+0

Upvoted, édité ma réponse pour l'incorporer! –

+1

Juste pour ajouter à quelqu'un qui a fait un googled ici: pour l'insérer dans un tableau à plusieurs colonnes, vous pouvez utiliser 'LOAD DATA LOCAL INFILE '/ usr/share/dict/words' INTO TABLE mots (colonne);' where column is a varchar champ dans lequel vous voulez stocker les mots. – stormbreaker

2

Je trouve ceci: MySQL formatted english words list

dunno beaucoup sur combien de mots ne sont pas en mais il y a une liste énorme de toute façon :)

Il y a environ 128/129K mots il et des mots plus de 10 lettres ont été enlevé.

Questions connexes