sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Gegevens importeren

Gebruik de mongoimport hulpprogramma om gegevens in een MongoDB-database te importeren.

MongoDB biedt de mongoimport hulpprogramma dat kan worden gebruikt om JSON-, CSV- of TSV-bestanden in een MongoDB-database te importeren.

mongoimport bevindt zich in de bin-map (bijv. /mongodb/bin of waar je het ook hebt geïnstalleerd).

Om gegevens te importeren, opent u een nieuw Terminal/Command Prompt-venster en voert u mongoimport in gevolgd door parameters zoals databasenaam, collectienaam, bronbestandsnaam, enz.

Als u merkt dat u mongoimport . niet kunt uitvoeren , zorg ervoor dat je ofwel de mongo . hebt verlaten hulpprogramma, of opende een nieuw Terminal/Command Prompt-venster voordat u mongoexport uitvoerde , omdat het een apart hulpprogramma is.

JSON-bestand importeren

Hier is een voorbeeld van het uitvoeren van mongoimport om een ​​JSON-bestand te importeren.

U herinnert zich misschien dat we eerder mongoexport gebruikten om de artiesten te exporteren verzameling naar een JSON-bestand.

Later lieten we de artiesten vallen collectie helemaal.

Nu importeren we die verzameling weer in onze database.

mongoimport --db music --file /data/dump/music/artists.json

Resulterend bericht:

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

Als u geen collectienaam opgeeft, wordt er een collectie gemaakt op basis van de naam van het bestand (minus een eventuele extensie).

Laten we nu terugschakelen naar onze mongo Terminal/Command Prompt-venster en haal de lijst met collecties op in onze database:

show collections

Resultaat:

artists
musicians
producers

Nu gaan we onze nieuw leven ingeblazen collectie ondervragen.

db.artists.find()

Resultaat:

{ "_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" } ] }

Geef een collectienaam op

U kunt de --collection . gebruiken argument om een ​​naam op te geven van de verzameling waar de gegevens in moeten gaan.

Laten we een ander bestand importeren, maar geef deze keer een verzamelingsnaam op:

mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json

Resulterend bericht:

2016-07-12T14:09:01.793+0700	connected to: localhost
2016-07-12T14:09:01.849+0700	imported 1 document

Schakel nu terug naar mongo en bekijk de lijst met collecties:

show collections

Resulterend bericht:

artists
jazz
musicians
producers

En tot slot, bevraag de jazz collectie:

db.jazz.find().pretty()

Resulterend bericht:

{
	"_id" : ObjectId("578214f048ef8c6b3ffb0159"),
	"artistname" : "Miles Davis",
	"albums" : [
		{
			"album" : "Kind of Blue",
			"year" : 1959,
			"genre" : "Jazz"
		},
		{
			"album" : "Bitches Brew",
			"year" : 1970,
			"genre" : "Jazz"
		}
	]
}

CSV-bestand importeren

U kunt een CSV-bestand importeren met --type csv .

Als het CSV-bestand een koprij heeft, gebruik dan --headerline om mongoimport te vertellen om de eerste regel te gebruiken om de naam van de velden in het resulterende document te bepalen.

Als het CSV-bestand geen kopregel heeft, gebruik dan de --fields parameter om de veldnamen in te stellen.

Met kopregel

Hier is een voorbeeld van het importeren van een document met een kopregel.

De inhoud van het CSV-bestand:

_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

Importeer het bestand:

mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv

Vraag de collectie op:

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

Zonder koprij

Hier is nog een CSV-bestand, maar dit heeft geen kopregel:

Mutt Lange, 1948
John Petrucci, 1967
DJ Shadow, 1972
George Clinton, 1941

Nu zullen we het importeren en de veldnamen specificeren die moeten worden gebruikt:

mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv

Vraag de collectie op:

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

U zult zien dat de ObjectId veld is automatisch voor ons aangemaakt en ingevuld.

We hadden ook al één document in deze verzameling voordat we de import uitvoerden: { "_id" :1, "name" :"Bob Rock" } . Daarom kunt u zien dat de import eenvoudig is toegevoegd toevoegen aan de collectie (in tegenstelling tot het vervangen en alle inhoud ervan).

U kunt dezelfde methode gebruiken om TSV-bestanden te importeren. Gebruik gewoon --type tsv .


  1. Redis schildwacht-docker-afbeelding / Dockerfile

  2. MongoDB:Server heeft opstartwaarschuwingen ''Toegangscontrole is niet ingeschakeld voor de database''

  3. Scan strings met nodejs in redis

  4. De nieuwe manier om open source databases te beheren