Verwendung von Mongoimport zum Importieren von CSV


189

Versuch, eine CSV mit Kontaktinformationen zu importieren:

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

Wenn Sie dies ausführen, werden der Datenbank anscheinend keine Dokumente hinzugefügt:

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

Trace sagt imported 1 objects, aber das Starten der Mongo-Shell und das Ausführen db.things.find()zeigt keine neuen Dokumente.

Was vermisse ich?


1
haben sie versucht, use mydbvor db.things.find()?
Kyle Wild

1
Ja - zeigt immer noch das andere Dokument, das in db.things war
Joe

Zum Importieren einer CSV in eine Sammlung verschachtelter Dokumente (mit Unterdokumenten
Raffael

Antworten:


243

Ihr Beispiel hat bei mir mit MongoDB 1.6.3 und 1.7.3 funktioniert. Beispiel unten war für 1.7.3. Verwenden Sie eine ältere Version von 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
Vielen Dank! Das funktioniert bei mir. Ich habe das Gleiche zuvor getan, mit der Ausnahme, dass Sie die CSV so erstellt haben, wie Sie es getan haben. Versuchte das und es funktionierte angemessen. Ich habe die Originaldatei in MS Excel erstellt, sodass am Ende jeder Zeile ein Problem mit der neuen Zeile aufgetreten ist.
Joe

Hat auch für mich gearbeitet. Ich habe die Datei mit der LF-Zeile gespeichert, die unter OS X endet, und es hat funktioniert.
Khash

Ist es möglich, alle Datensätze aus der CSV in nur 1 Objekt anstelle von 1 Objekt pro Datensatz zu importieren?
Aniket Kapse

Ja, halten Sie sich bei CSV-Aufgaben von Word fern. Ich hatte das gleiche Problem. Bugs in Word und auch in Mongoimport :(
Matt Fletcher

2
Um sich beim Importieren authentifizieren zu können, können Sie dies tunmongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
Blueskin

29

Ich war verwirrt über ein ähnliches Problem, bei dem mongoimport mir keinen Fehler gab, aber den Import von 0 Datensätzen meldete. Ich hatte meine Datei, die mit der OSX Excel für Mac 2011-Version nicht funktionierte, unter Verwendung des Standardformats "Speichern unter ..." "xls as csv" gespeichert, ohne speziell das Format "Windows Comma Separated (.csv)" anzugeben. Nachdem ich diese Site recherchiert und das Format "Speichern unter erneut mit" Windows Comma Separated (.csv) "versucht habe, hat mongoimport einwandfrei funktioniert. Ich denke, mongoimport erwartet in jeder Zeile ein Zeilenumbruchzeichen, und der Standard-CSV-Export von Mac Excel 2011 hat dies nicht bereitgestellt Zeichen am Ende jeder Zeile.


Excel ist in der Tat eine seltsame Sache bei der Verarbeitung von CSV-Dateien. Dazu gehört auch der Versuch, CSVs in andere Datenbanken zu importieren. Dies ist kein Problem im Zusammenhang mit Mongo. Ich würde vorschlagen, Google Sheets zu verwenden, wenn Sie mit CSVs herumspielen. Es ist kostenlos, online und ermöglicht den Import / Export korrekt formatierter CSVs und TSVs
MacK

21

Wir müssen den folgenden Befehl ausführen:

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

-d ist der Datenbankname

-c ist der Name der Sammlung

--headerline Wenn Sie --type csv oder --type tsv verwenden, wird die erste Zeile als Feldname verwendet. Andernfalls importiert mongoimport die erste Zeile als eigenständiges Dokument.

Für weitere Informationen: Mongoimport


6

Sie müssen sich höchstwahrscheinlich authentifizieren, wenn Sie in Produktionsumgebungen arbeiten. Sie können so etwas verwenden, um sich bei der richtigen Datenbank mit den entsprechenden Anmeldeinformationen zu authentifizieren.

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

3

Stellen Sie sicher, dass am Ende der Datei eine leere Zeile steht. Andernfalls wird die letzte Zeile bei einigen Versionen von mongoimport ignoriert


3

Ich benutze dies auf Mongoimport Shell

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

Typ kann csv / tsv / json wählen, aber nur csv / tsv kann verwenden --headerline

Sie können mehr über das offizielle Dokument lesen .


1

Robert Stewart hat bereits geantwortet, wie man mit mongoimport importiert.

Ich schlage eine einfache Möglichkeit vor, CSV elegant mit 3T MongoChef Tool (Version 3.2+) zu importieren . Könnte in Zukunft jemandem helfen.

  1. Sie müssen nur die Sammlung auswählen
  2. Wählen Sie die zu importierende Datei aus
  3. Sie können auch die Auswahl der zu importierenden Daten aufheben. Es gibt auch viele Möglichkeiten.
  4. Sammlung importiert

Sehen Sie, wie Sie Videos importieren


1

Zuerst sollten Sie aus der mongoShell herauskommen und dann den mongoimportBefehl wie folgt ausführen :

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$

$ mongoimport -d marketdata -c minibars --type csv --headerline --file '/Users/Aditya/Downloads/mstf.csv' Gurantaed Ergebnis von Manoj Barik
user8006819

1

Die Antworten von Robert Stewart sind großartig.

Ich möchte hinzufügen, dass Sie Ihre Felder auch mit --columHaveTypes und --fields wie folgt eingeben können:

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

(Achten Sie darauf, dass nach dem Komma zwischen Ihren Feldern kein Leerzeichen steht.)

Weitere Typen finden Sie im Dokument hier: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes


1

Verwenden Sie für die Version 3.4 die folgende Syntax:

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

Nach 3 Tagen habe ich es endlich alleine geschafft. Vielen Dank an alle Benutzer, die mich unterstützt haben.


Es gibt Tippfehler, --headerline,
Ankit Kumar

1

Beim Versuch, die CSV-Datei zu importieren, wurde eine Fehlermeldung angezeigt. Was habe ich getan. Zuerst habe ich die Spaltennamen der Kopfzeile in Großbuchstaben geändert und "-" entfernt und bei Bedarf "_" hinzugefügt. Geben Sie dann den folgenden Befehl ein, um CSV in Mongo zu importieren

$ mongoimport --db=database_name --collection=collection_name --type=csv --file=file_name.csv --headerline  

Geben Sie hier die Bildbeschreibung ein


Arbeitete wie Charme! Die oben erwähnte Antwort war für ältere MongoDB-Versionen, denke ich.
Raghav Sharma

0

C: \ wamp \ mongodb \ bin> mongoexport --db proj_mmm - Sammlungsangebote --csv --fieldFile Angebote_fields.txt --out Angebote.csv


0

Verwenden Sie dies einfach, nachdem Sie mongoimport ausgeführt haben

Es wird die Anzahl der importierten Objekte zurückgegeben

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

gibt die Anzahl der Objekte zurück.


0

verwenden :

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

0

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

Sammlungsdaten prüfen: -

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

Seltsamerweise erwähnte niemand die --uriFlagge:

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

0

Teilen für zukünftige Leser:

In unserem Fall mussten wir den hostParameter hinzufügen , damit er funktioniert

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

Meine Anforderung bestand darin, die .csv (with no headline)in eine entfernte MongoDBInstanz zu importieren . Für den mongoimport v3.0.7folgenden Befehl hat bei mir funktioniert:

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

Beispielsweise:

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

Unten sehen Sie den Screenshot, wie er nach dem Import aussieht:

Geben Sie hier die Bildbeschreibung ein

wo nameund emailsind die Spalten in der .csvDatei.


0

Bei der angegebenen .csvDatei, die nur eine Spalte ohne Kopfzeile enthält , hat der folgende Befehl für mich funktioniert:

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

Dabei bezieht sich Feldname auf den Kopfzeilennamen der Spalte in der .csvDatei.


0

Stellen Sie sicher, dass Sie die CSV-Datei nach / usr / local / bin oder in den Ordner kopieren, in dem sich Ihre Mondodb befindet

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.