wake-up-neo.net

Wie man mit mongoimport csv importiert

Versuch, ein 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 

Das Ausführen dieses Befehls scheint der Datenbank keine Dokumente hinzuzufügen:

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

Trace sagt imported 1 objects, aber wenn Sie die Mongo Shell starten und db.things.find() ausführen, werden keine neuen Dokumente angezeigt. 

Was vermisse ich?

164
Joe

Ihr Beispiel hat für mich 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 }
219
Robert Stewart

Ich war verblüfft mit einem ähnlichen Problem, bei dem mongoimport mir keinen Fehler gab, sondern den Import von 0 Datensätzen meldete. Ich hatte meine Datei, die nicht mit OSX Excel für Mac 2011 funktioniert, mit dem Standardformat "Speichern unter" gespeichert. Nach dem Durchsuchen dieser Site und dem erneuten "Speichern unter Verwendung des Formats" Windows Comma Separated (.csv) "funktionierte mongoimport einwandfrei. Ich denke, mongoimport erwartet in jeder Zeile ein Newline-Zeichen und der standardmäßige csv-Export von Mac Excel 2011 bot dies nicht Zeichen am Ende jeder Zeile.

25
user2514493

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 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 separates Dokument.

Für weitere Informationen: Mongoimport

10
d.danailov

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'
5
blueskin

Überprüfen Sie, ob Sie am Ende der Datei eine leere Zeile haben. Andernfalls wird die letzte Zeile in einigen Versionen von Mongoimport ignoriert

3
Maxence

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 Nur csv/tsv kann --headerline verwenden.

Sie können mehr unter offiziell doc lesen.

2
R-Ling Chou

Zuerst sollten Sie die mongo-Shell verlassen und dann den mongoimport-Befehl 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$
1
user8006819

Robert Stewart hat bereits geantwortet, wie man mit mongoimport importieren kann.

Ich empfehle eine einfache Möglichkeit, CSV elegant mit 3T MongoChef Tool (Version 3.2 und höher) zu importieren. Könnte jemand in Zukunft 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 Daten aufheben, die importiert werden sollen. Es gibt auch viele Möglichkeiten.
  4. Sammlung importiert

Siehe Importieren von Videos

1
Somnath Muluk

Robert Stewarts Antworten 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 den Feldern kein Leerzeichen steht.)

Für andere Typen siehe doc hier: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes

1
Thomas Pierre

Seltsamerweise erwähnte niemand --uri flag:

mongoimport --uri connectionString -c questions --type csv --file questions.csv --headerline 
0
Alex Ershov

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

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

Meine Anforderung bestand darin, die.csv (with no headline)in eine entfernte MongoDB-Instanz zu importieren. Der Befehl mongoimport v3.0.7below hat für mich 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

Zum Beispiel:

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:

 enter image description here 

dabei sind name und email die Spalten in der .csv-Datei.

0
Arpit

Angesichts der .csv -Datei, die ich habe und die nur eine Spalte mit kein Header 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

wobei Feldname bezieht sich auf den Headernamen der Spalte in der Datei .csv.

0
Arpit

C:\wamp\mongodb\bin> mongoexport --db proj_mmm --kollektionsangebote --csv --fieldFile offerings_fields.txt --out offers.csv

0
Bhaskar

benutzen :

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

Teilen für zukünftige Leser:

In unserem Fall mussten wir den Parameter Host 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
student
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
Dinesh Shinkar

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. Danke an alle Benutzer, die mich unterstützt haben.

0
Sreshta Tric

Verwenden Sie dies einfach nach der Ausführung von Mongoimport 

Die Anzahl der importierten Objekte wird zurückgegeben 

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

gibt die Anzahl der Objekte zurück.

0
HarishThangavel