Comment utiliser mongoimport pour importer csv

Essayer d'importer un fichier CSV avec les 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 ceci 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 le lancement du shell Mongo et l'exécution de db.things.find() ne montrent aucun nouveau document.

Qu'est-ce que je manque?

155
demandé sur Somnath Muluk 2011-01-14 02:27:49

17 réponses

Votre exemple a fonctionné pour moi avec MongoDB 1.6.3 et 1.7.3. L'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 }
208
répondu Robert Stewart 2011-01-16 07:57:55

J'étais perplexe avec un problème similaire où mongoimport ne m'a pas donné une erreur mais signalait l'importation de 0 enregistrements. J'avais enregistré mon fichier qui ne fonctionnait pas en utilisant la version OSX Excel pour Mac 2011 en utilisant la valeur par défaut " Enregistrer sous..""xls comme csv" sans spécifier " Windows séparés par des virgules(.csv) " format spécifiquement. Après avoir fait des recherches sur ce site et essayé le "Enregistrer sous à nouveau en utilisant" fenêtres séparées par des virgules (.csv) " format, mongoimport a bien fonctionné. Je pense que mongoimport attend une nouvelle ligne caractère sur chaque ligne et l'exportation par défaut Mac Excel 2011 csv n'a pas fourni ce caractère à la fin de chaque ligne.

25
répondu user2514493 2013-06-23 22:20:43

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 base de données

-c est le nom de la collection

-- headerline si vous utilisez --type csv ou -- type tsv, utilise la première ligne comme nom de champ. Sinon, mongoimport importera la première ligne en tant que document distinct.

Pour plus d'informations: mongoimport

10
répondu d.danailov 2016-06-14 11:05:57

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 base de données 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'
5
répondu blueskin 2016-07-11 19:20:18

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

3
répondu Maxence 2011-01-14 06:59:33

Je l'utilise sur mongoimport shell

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 savoir plus sur le doc officiel .

2
répondu R-Ling Chou 2018-01-26 03:20:01

Robert Stewart a déjà répondu pour savoir comment importer avec mongoimport.

Je suggère un moyen facile d'importer CSV avec élégance avec 3T MongoChef Outil (3.2 + version). Peut aider quelqu'un dans le futur.

  1. il vous suffit de sélectionner collection
  2. Sélectionnez le fichier à importer
  3. Vous pouvez également désélectionner les données qui va importer. Aussi beaucoup d'options sont là.
  4. Collection importée

Voir comment importer de la vidéo

1
répondu Somnath Muluk 2016-01-29 07:57:17

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$
1
répondu user8006819 2017-05-13 16:33:40

Les réponses de Robert Stewart sont excellentes.

Je voudrais ajouter que vous pouvez également taper vos champs avec --columHaveTypes et --fields comme ceci:

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

(Attention de 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
répondu Thomas Pierre 2018-01-18 11:18:56

C:\wamp\mongodb\bin > mongoexport --DB proj_mmm -- collection offerings -- csv --fieldfile offerings_fields.txt --des offrandes.csv

0
répondu Bhaskar 2014-06-19 06:31:00

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

Il renverra le nombre d'objets importés

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

Renvoie le nombre d'objets.

0
répondu HarishThangavel 2014-07-07 13:33:35

Utilisation:

mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv
0
répondu Tavleen 2016-04-06 14:41:55

Mongoimport-d test-C test --type csv --fichier 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
}
0
répondu dinesh vishe 2017-11-19 16:50:06
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)
0
répondu Dinesh Shinkar 2018-05-16 14:02:28

Pour la version 3.4, veuillez utiliser la syntaxe suivante:

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

Après 3 jours, je l'ai finalement fait tout seul. Merci à tous les utilisateurs qui m'ont soutenu.

0
répondu Sreshta Tric 2018-07-30 01:46:22

Étrangement personne n'a indiqué --uri drapeau:

mongoimport --uri connectionString -c questions --type csv --file questions.csv --headerline 
0
répondu Alex Ershov 2018-08-22 05:23:54

Partage pour les futurs lecteurs:

Dans notre cas, nous avions besoin d'ajouter 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
0
répondu student 2018-09-04 07:38:59