Comment utiliser mongoimport pour importer csv

Essayer 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 

En cours d’exécution, cela ne semble pas append de documents à la firebase database:

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

Trace dit imported 1 objects , mais lancer le shell Mongo et exécuter db.things.find() n’affiche aucun nouveau document.

Qu’est-ce que je rate?

Votre exemple a fonctionné pour moi avec MongoDB 1.6.3 et 1.7.3. Exemple ci-dessous était pour 1.7.3. Utilisez-vous une ancienne version 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 } 

J’ai été perplexe face à un problème similaire, où mongoimport ne m’a pas fait d’erreur mais a signalé l’importation de 0 enregistrements. J’avais sauvegardé mon fichier qui ne fonctionnait pas avec la version OSX Excel pour Mac 2011 en utilisant la valeur par défaut “Enregistrer sous ..” “xls comme csv” sans spécifier de format “Windows Comma Separated (.csv)”. Après avoir recherché ce site et essayé le “Enregistrer sous à nouveau en utilisant le format” Windows Comma Separated (.csv) “, mongoimport fonctionnait correctement. Je pense que mongoimport attend un caractère de nouvelle ligne sur chaque ligne et que l’exportation de csv par défaut de Mac Excel caractère à la fin de chaque ligne.

Nous devons exécuter la commande suivante:

 mongoimport --host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline 

-d est le nom de la firebase database

-c est le nom de la collection

–headerline Si vous utilisez –type csv ou –type tsv, utilisez la première ligne comme noms de champs. Sinon, mongoimport importera la première ligne en tant que document distinct.

Pour plus d’informations: mongoimport

Vous devrez probablement vous authentifier si vous travaillez dans des environnements de production. Vous pouvez utiliser quelque chose comme ceci pour vous authentifier sur la firebase database correcte avec les informations d’identification appropriées.

 mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123' 

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

Je l’utilise sur le shell mongoimport

 mongoimport --db db_name --collection collection_name --type csv --file C:\\Your_file_path\target_file.csv --headerline 

type peut choisir csv / tsv / json mais seul csv / tsv peut utiliser --headerline

Vous pouvez en lire plus sur le doc officiel .

Robert Stewart a déjà répondu à la question de savoir comment importer avec mongoimport.

Je suggère un moyen facile d’importer CSV avec élégance avec 3T MongoChef Tool (version 3.2+). Peut aider quelqu’un à l’avenir.

  1. Vous avez juste besoin de sélectionner la collection
  2. Sélectionnez le fichier à importer
  3. Vous pouvez également désélectionner les données à importer. De nombreuses options sont également disponibles.
  4. Collection imscope

Voir comment importer une vidéo

Vous devez d’abord sortir du shell mongo , puis exécuter la commande mongoimport comme ceci:

 Manojs-MacBook-Air:bin Aditya$ mongoimport -d marketdata -c minibars --type csv --headerline --file '/Users/Aditya/Downloads/mstf.csv' 2017-05-13T20:00:41.989+0800 connected to: localhost 2017-05-13T20:00:44.123+0800 imported 97609 documents Manojs-MacBook-Air:bin Aditya$ 

C: \ wamp \ mongodb \ bin> mongoexport –db proj_mmm –collection offres –csv –fieldFile offerings_fields.txt

Il suffit de l’utiliser après avoir exécuté mongoimport

Il retournera le nombre d’objects importés

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

renverra le nombre d’objects.

utilisation :

 mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv 

mongoimport -d test -c test –type csv –file SampleCSVFile_119kb.csv –headerline

vérifier les données de collecte: –

 var collections = db.getCollectionNames(); for(var i = 0; i< collections.length; i++) { print('Collection: ' + collections[i]); // print the name of each collection db.getCollection(collections[i]).find().forEach(printjson); //and then print the json of each of its elements } 

Les réponses de Robert Stewart sont excellentes.

J’aimerais append que vous pouvez aussi taper vos champs avec –columHaveTypes et –fields comme ceci:

 mongoimport -d myDb -c myCollection --type csv --file myCsv.csv --columnsHaveTypes --fields "label.ssortingng(),code.ssortingng(),aBoolean.boolean()" 

(Attention à ne pas avoir d’espace après la virgule entre vos champs)

Pour les autres types, voir doc ici: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes

 1]We can save xsl as .csv file 2] Got to MongoDB bin pathon cmd - > cd D:\Arkay\soft\MongoDB\bin 3] Run below command > mongoimport.exe -d dbname -c collectionname --type csv --file "D:\Arkay\test.csv" --headerline 4] Verify on Mongo side using below coomand. >db.collectioname.find().pretty().limit(1) 

Pour la version 3.4, utilisez la syntaxe suivante:

 mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headrline 

Au bout de 3 jours, j’ai finalement réussi tout seul. Merci à tous les utilisateurs qui m’ont soutenu.

Étrangement, personne n’a mentionné le drapeau --uri :

 mongoimport --uri connectionSsortingng -c questions --type csv --file questions.csv --headerline 

Partage pour les futurs lecteurs:

Dans notre cas, nous devions append le paramètre host pour le faire fonctionner

 mongoimport -h mongodb://someMongoDBhostUrl:somePORTrunningMongoDB/someDB -d someDB -c someCollection -u someUserName -p somePassword --file someCSVFile.csv --type csv --headerline --host=127.0.0.1