Question

Essayer d'importer un fichier 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 

Running cela ne semble pas d'ajouter des documents à la base de données:

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

Trace dit imported 1 objects, mais le tir la coquille et Mongo db.things.find() en cours d'exécution ne montre pas de nouveaux documents.

Qu'est-ce que je manque?

Était-ce utile?

La solution

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 version plus ancienne 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 }

Autres conseils

Je suis perplexe face à un problème similaire où mongoimport ne me donne pas une erreur, mais ferait rapport 0 importer des enregistrements. J'avais sauvé mon dossier qui ne fonctionne pas en utilisant le Mac OS X Excel pour Mac version 2011 en utilisant la valeur par défaut « Enregistrer sous .. » « xls comme csv » sans spécifier « Windows Comma Separated (.csv) » le format spécifique. Après des recherches sur ce site et d'essayer le « Enregistrer sous à nouveau en utilisant « format Windows Comma Separated (.csv) », mongoimport a bien fonctionné. Je pense que mongoimport attend un caractère de nouvelle ligne sur chaque ligne et la valeur par défaut Mac Excel 2011 l'exportation csv n'a pas fourni que 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 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 noms de champ. Dans le cas contraire, mongoimport importera la première ligne en tant que document distinct.

Pour plus d'informations: mongoimport

vous aurez besoin le plus susceptible d'identifier si vous travaillez dans la production sorte d'environnements. Vous pouvez utiliser quelque chose comme ceci pour authentifier contre la base de données correcte avec des 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

J'utilise ce shell sur mongoimport

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

peut choisir csv / TSV / JSON Mais seulement csv / TSV peut utiliser --headerline

Vous pouvez en savoir plus sur le doc offical.

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

Je suggère moyen facile de CSV d'importation avec élégance 3T MongoChef outil (3.2+ Version). Quelqu'un pourrait aider à l'avenir.

  1. il vous suffit de sélectionner la collection
  2. Sélectionnez le fichier à importer
  3. Vous pouvez également les données qui unselect va importer. En outre de nombreuses options sont là.
  4. Collection importée

Voir comment importer des vidéos

Tout d'abord vous devez sortir de la coquille de mongo puis exécutez 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$

Les réponses de Robert Stewart est grande.

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 à 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

Pour la version 3.4, s'il vous plaît utilisez la syntaxe suivante:

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

Au bout de 3 jours, j'ai finalement fait sur moi-même. Merci à tous les utilisateurs qui me soutenaient.

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

Il suffit d'utiliser ce après l'exécution mongoimport

Il retourne nombre d'objets importés

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

retourne le nombre d'objets.

utilisation:

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

mongoimport -d Test Test -c --type csv --file SampleCSVFile_119kb.csv --headerline

Vérification 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
}

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)

Bizarrement personne n'a mentionné drapeau --uri:

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

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

Mon exigence était d'importer le .csv (with no headline) instance de MongoDB à distance. Pour la commande mongoimport v3.0.7below a fonctionné pour moi:

mongoimport -h <host>:<port> -u <db-user> -p <db-password>  -d <database-name> -c <collection-name> --file <csv file location> --fields <name of the columns(comma seperated) in csv> --type csv

Par exemple:

mongoimport -h 1234.mlab.com:61486 -u arpitaggarwal -p password  -d my-database -c employees --file employees.csv --fields name,email --type csv

Voici la capture d'écran de la façon dont il ressemble après l'importation:

name et email sont les colonnes dans le fichier .csv.

Compte tenu de fichier .csv je qui ne possède qu'une seule colonne avec pas d'en-tête , ci-dessous commande a fonctionné pour moi:

mongoimport -h <mongodb-host>:<mongodb-port> -u <username> -p <password> -d <mongodb-database-name> -c <collection-name> --file file.csv --fields <field-name> --type csv

où le champ nom fait référence au nom en-tête de la colonne dans le fichier .csv.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top