Comment utiliser mongoimport pour csv import
-
11-10-2019 - |
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?
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.
- il vous suffit de sélectionner la collection
- Sélectionnez le fichier à importer
- Vous pouvez également les données qui unselect va importer. En outre de nombreuses options sont là.
- Collection importée
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.7
below 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:
où 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
.