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
.