MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB - Daten importieren

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 .