210 votes

Comment utiliser mongoimport pour importer des csv ?

J'essaie d'importer un CSV avec des informations de contact :

Name,Address,City,State,ZIP  
Jane Doe,123 Main St,Whereverville,CA,90210  
John Doe,555 Broadway Ave,New York,NY,10010 

L'exécution de cette opération ne semble pas ajouter de documents à la base de données :

$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline

Trace dit imported 1 objects mais en lançant le shell Mongo et en exécutant db.things.find() ne montre pas de nouveaux documents.

Qu'est-ce que je rate ?

1 votes

Avez-vous essayé use mydb antes de db.things.find() ?

1 votes

Oui, il affiche toujours l'autre document qui se trouvait dans db.things.

0 votes

Pour l'importation d'un CSV dans une collection de documents imbriqués (avec des sous-documents ou des tableaux), vous pouvez utiliser AWK - joyofdata.de/blog/import-csv-into-mongodb-with-awk-json

267voto

Robert Stewart Points 1250

Votre exemple a fonctionné pour moi avec MongoDB 1.6.3 et 1.7.3. L'exemple ci-dessous était pour la version 1.7.3. Utilisez-vous une version antérieure de MongoDB ?

$ cat > locations.csv
Name,Address,City,State,ZIP
Jane Doe,123 Main St,Whereverville,CA,90210
John Doe,555 Broadway Ave,New York,NY,10010
 ctrl-d
$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline
connected to: 127.0.0.1
imported 3 objects
$ mongo
MongoDB shell version: 1.7.3
connecting to: test
> use mydb
switched to db mydb
> db.things.find()
{ "_id" : ObjectId("4d32a36ed63d057130c08fca"), "Name" : "Jane Doe", "Address" : "123 Main St", "City" : "Whereverville", "State" : "CA", "ZIP" : 90210 }
{ "_id" : ObjectId("4d32a36ed63d057130c08fcb"), "Name" : "John Doe", "Address" : "555 Broadway Ave", "City" : "New York", "State" : "NY", "ZIP" : 10010 }

7 votes

Merci ! Cela fonctionne pour moi. Je faisais la même chose avant, sauf que j'ai créé le CSV comme vous l'avez fait. J'ai essayé de le faire et cela a fonctionné correctement. J'ai créé le fichier original dans MS Excel, donc je suppose qu'il y avait un problème avec les nouvelles lignes à la fin de chaque ligne.

0 votes

Ça a marché pour moi aussi. J'ai enregistré le fichier avec une fin de ligne LF sous OS X et ça a marché.

0 votes

Est-il possible d'importer tous les enregistrements du csv dans un seul objet au lieu d'un objet par enregistrement ?

30voto

user2514493 Points 81

J'étais perplexe face à un problème similaire où mongoimport ne me donnait pas d'erreur mais signalait l'importation de 0 enregistrement. J'avais sauvegardé mon fichier qui ne fonctionnait pas à l'aide de la version OSX d'Excel pour Mac 2011 en utilisant l'option par défaut "Enregistrer sous " "xls as csv" sans spécifier spécifiquement le format "Windows Comma Separated(.csv)". Après avoir fait des recherches sur ce site et essayé de nouveau l'option " Enregistrer sous " en utilisant le format " Windows Comma Separated (.csv) ", mongoimport a bien fonctionné. Je pense que mongoimport attend un caractère de nouvelle ligne sur chaque ligne et que l'exportation csv par défaut de Mac Excel 2011 ne fournit pas ce caractère à la fin de chaque ligne.

0 votes

Excel est en effet une bête bizarre lorsqu'il traite des fichiers CSV, cela inclut également les tentatives d'importation de CSV sur d'autres bases de données, ce n'est pas strictement un problème lié à Mongo. Je vous suggère d'utiliser Google Sheets pour jouer avec les CSV, c'est gratuit, en ligne et permet d'importer/exporter des CSV et TSV correctement formatés.

3voto

Maxence Points 5619

Vérifiez que vous avez une ligne vide à la fin du fichier, sinon la dernière ligne sera ignorée sur certaines versions de mongoimport.

0voto

HarishThangavel Points 31

Utilisez simplement ceci après avoir exécuté mongoimport

Il retournera le nombre d'objets importés

use db
db.collectionname.find().count()

retournera le nombre d'objets.

0voto

Bhaskar Points 11

C:\wamp\mongodb\bin >mongoexport --db proj_mmm --collection offerings --csv --fieldFile offerings_fields.txt --out offerings.csv

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X