Verwenden Sie den mongoimport Dienstprogramm zum Importieren von Daten in eine MongoDB-Datenbank.
MongoDB stellt den mongoimport
bereit Dienstprogramm, das zum Importieren von JSON-, CSV- oder TSV-Dateien in eine MongoDB-Datenbank verwendet werden kann.
mongoimport
befindet sich im bin-Verzeichnis (z. B.
/mongodb/bin
oder wo auch immer Sie es installiert haben).
Öffnen Sie zum Importieren von Daten ein neues Terminal-/Eingabeaufforderungsfenster und geben Sie mongoimport
ein gefolgt von Parametern wie Datenbankname, Sammlungsname, Quelldateiname usw.
Wenn Sie feststellen, dass Sie mongoimport nicht ausführen können , vergewissern Sie sich, dass Sie entweder mongo beendet haben oder öffnen Sie ein neues Terminal-/Eingabeaufforderungsfenster, bevor Sie mongoexport ausführen , da es sich um ein separates Dienstprogramm handelt.
JSON-Datei importieren
Hier ist ein Beispiel für die Ausführung von mongoimport
um eine JSON-Datei zu importieren.
Sie erinnern sich vielleicht, dass wir zuvor mongoexport verwendet haben um die Künstler zu exportieren Sammlung in eine JSON-Datei.
Später haben wir die Künstler fallen gelassen Sammlung insgesamt.
Jetzt importieren wir diese Sammlung zurück in unsere Datenbank.
mongoimport --db music --file /data/dump/music/artists.json
Ergebnismeldung:
2016-07-12T13:34:04.904+0700 no collection specified 2016-07-12T13:34:04.905+0700 using filename 'artists' as collection 2016-07-12T13:34:04.911+0700 connected to: localhost 2016-07-12T13:34:04.968+0700 imported 13 documents
Wenn Sie keinen Sammlungsnamen angeben, wird eine Sammlung basierend auf dem Namen der Datei (abzüglich etwaiger Erweiterungen) erstellt.
Wechseln wir nun zurück zu unserem mongo Terminal/Eingabeaufforderungsfenster und rufen Sie die Liste der Sammlungen in unserer Datenbank ab:
show collections
Ergebnis:
artists musicians producers
Jetzt fragen wir unsere wiederbelebte Sammlung ab.
db.artists.find()
Ergebnis:
{ "_id" : 1, "artistname" : "AC/DC" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" } { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : ObjectId("5781f85d48ef8c6b3ffb0150"), "artistname" : "Deep Purple", "albums" : [ { "album" : "Machine Head", "year" : 1972, "genre" : "Rock" }, { "album" : "Stormbringer", "year" : 1974, "genre" : "Rock" } ] } { "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] } { "_id" : ObjectId("578217c248ef8c6b3ffb015a"), "artistname" : "Robben Ford", "albums" : [ { "album" : "Bringing it Back Home", "year" : 2013, "genre" : "Blues" }, { "album" : "Talk to Your Daughter", "year" : 1988, "genre" : "Blues" } ] } { "_id" : 2, "artistname" : "Prince", "address" : { "street" : "Audubon Road", "city" : "Chanhassen", "state" : "Minnesota", "country" : "United States" } } { "_id" : 4, "artistname" : "Rush" } { "_id" : 3, "artistname" : "Moby", "albums" : [ { "album" : "Play", "year" : 1999, "genre" : "Electronica" }, { "album" : "Long Ambients 1: Calm. Sleep.", "year" : 2016, "genre" : "Ambient" } ] } { "_id" : ObjectId("578217c248ef8c6b3ffb015b"), "artistname" : "Snoop Dogg", "albums" : [ { "album" : "Tha Doggfather", "year" : 1996, "genre" : "Rap" }, { "album" : "Reincarnated", "year" : 2013, "genre" : "Reggae" } ] }
Geben Sie einen Sammlungsnamen an
Sie können die --collection
verwenden Argument, um einen Namen der Sammlung anzugeben, in die die Daten aufgenommen werden sollen.
Importieren wir eine weitere Datei, aber geben Sie dieses Mal einen Sammlungsnamen an:
mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json
Ergebnismeldung:
2016-07-12T14:09:01.793+0700 connected to: localhost 2016-07-12T14:09:01.849+0700 imported 1 document
Wechseln Sie nun zurück zu mongo und überprüfen Sie die Liste der Sammlungen:
show collections
Ergebnismeldung:
artists jazz musicians producers
Fragen Sie schließlich den Jazz ab Sammlung:
db.jazz.find().pretty()
Ergebnismeldung:
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
CSV-Datei importieren
Sie können eine CSV-Datei importieren, indem Sie --type csv
verwenden .
Wenn die CSV-Datei eine Kopfzeile hat, verwenden Sie --headerline
mongoimport
mitzuteilen um die erste Zeile zu verwenden, um die Namen der Felder im resultierenden Dokument zu bestimmen.
Wenn die CSV-Datei keine Kopfzeile hat, verwenden Sie die --fields
Parameter zum Setzen der Feldnamen.
Mit Kopfzeile
Hier ist ein Beispiel für den Import eines Dokuments mit einer Kopfzeile.
Der Inhalt der CSV-Datei:
_id,albumname,artistname 1,Killers,"Iron Maiden" 2,Powerslave,"Iron Maiden" 12,"Somewhere in Time","Iron Maiden" 3,"Surfing with the Alien","Joe Satriani" 10,"Flying in a Blue Dream","Joe Satriani" 11,"Black Swans and Wormhole Wizards","Joe Satriani" 6,"Out of the Loop","Mr Percival" 7,"Suck on This",Primus 8,"Pork Soda",Primus 9,"Sailing the Seas of Cheese",Primus
Importieren Sie die Datei:
mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv
Fragen Sie die Sammlung ab:
> db.catalog.find() { "_id" : 2, "albumname" : "Powerslave", "artistname" : "Iron Maiden" } { "_id" : 1, "albumname" : "Killers", "artistname" : "Iron Maiden" } { "_id" : 3, "albumname" : "Surfing with the Alien", "artistname" : "Joe Satriani" } { "_id" : 12, "albumname" : "Somewhere in Time", "artistname" : "Iron Maiden" } { "_id" : 10, "albumname" : "Flying in a Blue Dream", "artistname" : "Joe Satriani" } { "_id" : 6, "albumname" : "Out of the Loop", "artistname" : "Mr Percival" } { "_id" : 7, "albumname" : "Suck on This", "artistname" : "Primus" } { "_id" : 8, "albumname" : "Pork Soda", "artistname" : "Primus" } { "_id" : 11, "albumname" : "Black Swans and Wormhole Wizards", "artistname" : "Joe Satriani" } { "_id" : 9, "albumname" : "Sailing the Seas of Cheese", "artistname" : "Primus" }
Ohne Kopfzeile
Hier ist eine weitere CSV-Datei, aber diese hat keine Kopfzeile:
Mutt Lange, 1948 John Petrucci, 1967 DJ Shadow, 1972 George Clinton, 1941
Jetzt importieren wir es und geben die zu verwendenden Feldnamen an:
mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv
Fragen Sie die Sammlung ab:
> db.producers.find() { "_id" : 1, "name" : "Bob Rock" } { "_id" : ObjectId("5784a3a5dfad478c015f6b72"), "name" : "John Petrucci", "born" : 1967 } { "_id" : ObjectId("5784a3a5dfad478c015f6b73"), "name" : "Mutt Lange", "born" : 1948 } { "_id" : ObjectId("5784a3a5dfad478c015f6b74"), "name" : "George Clinton", "born" : 1941 } { "_id" : ObjectId("5784a3a5dfad478c015f6b75"), "name" : "DJ Shadow", "born" : 1972 }
Sie werden sehen, dass die ObjectId Feld wurde automatisch erstellt und für uns ausgefüllt.
Außerdem hatten wir bereits ein Dokument in dieser Sammlung, bevor wir den Import ausgeführt haben: { "_id" :1, "name" :"Bob Rock" } . Daher können Sie sehen, dass der Import einfach hinzugefügt wurde in die Sammlung (anstatt sie und ihren gesamten Inhalt zu ersetzen).
Sie können die gleiche Methode verwenden, um TSV-Dateien zu importieren. Verwenden Sie einfach --type tsv
.