Brug mongoimport værktøj til at importere data til en MongoDB-database.
MongoDB leverer mongoimport
værktøj, der kan bruges til at importere JSON-, CSV- eller TSV-filer til en MongoDB-database.
mongoimport
er placeret i bin-mappen (f.eks.
/mongodb/bin
eller hvor du end har installeret det).
For at importere data skal du åbne et nyt terminal-/kommandopromptvindue og indtaste mongoimport
efterfulgt af parametre som databasenavn, samlingsnavn, kildefilnavn osv.
Hvis du opdager, at du ikke kan køre mongoimport , vær sikker på, at du enten har forladt mongo hjælpeprogram, eller åbnet et nyt terminal-/kommandopromptvindue, før du kørte mongoexport , da det er et separat hjælpeprogram.
Importer JSON-fil
Her er et eksempel på at køre mongoimport
for at importere en JSON-fil.
Du husker måske, at vi tidligere brugte mongoexport for at eksportere kunstnerne samling til en JSON-fil.
Vi droppede senere kunstnerne samlet indsamling.
Nu importerer vi den samling tilbage til vores database.
mongoimport --db music --file /data/dump/music/artists.json
Resulterende besked:
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
Hvis du ikke angiver et samlingsnavn, oprettes en samling baseret på navnet på filen (minus enhver filtypenavn).
Lad os nu skifte tilbage til vores mongo Terminal-/kommandopromptvinduet og hent listen over samlinger i vores database:
show collections
Resultat:
artists musicians producers
Nu vil vi forespørge på vores genoplivede samling.
db.artists.find()
Resultat:
{ "_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" } ] }
Angiv et samlingsnavn
Du kan bruge --collection
argument for at angive et navn på den samling, som dataene skal gå ind i.
Lad os importere en anden fil, men denne gang skal du angive et samlingsnavn:
mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json
Resulterende besked:
2016-07-12T14:09:01.793+0700 connected to: localhost 2016-07-12T14:09:01.849+0700 imported 1 document
Skift nu tilbage til mongo og tjek listen over samlinger:
show collections
Resulterende besked:
artists jazz musicians producers
Og til sidst, forespørg på jazz samling:
db.jazz.find().pretty()
Resulterende besked:
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
Importer CSV-fil
Du kan importere en CSV-fil ved at bruge --type csv
.
Hvis CSV-filen har en overskriftsrække, skal du bruge --headerline
for at fortælle
mongoimport
at bruge den første linje til at bestemme navnet på felterne i det resulterende dokument.
Hvis CSV-filen ikke har en overskriftsrække, skal du bruge --fields
parameter for at indstille feltnavnene.
Med overskriftsrække
Her er et eksempel på import af et dokument med en overskriftsrække.
Indholdet af CSV-filen:
_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
Importer filen:
mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv
Spørg samlingen:
> 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" }
Uden overskriftsrække
Her er en anden CSV-fil, men denne har ikke en overskriftsrække:
Mutt Lange, 1948 John Petrucci, 1967 DJ Shadow, 1972 George Clinton, 1941
Nu importerer vi det og angiver de feltnavne, der skal bruges:
mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv
Spørg samlingen:
> 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 }
Du vil se, at ObjectId felt er automatisk blevet oprettet og udfyldt for os.
Desuden havde vi allerede ét dokument i denne samling, før vi kørte importen: { "_id" :1, "name" :"Bob Rock" } . Derfor kan du se, at importen blot er tilføjet til samlingen (i modsætning til at erstatte den og alt dens indhold).
Du kan bruge samme metode til at importere TSV-filer. Brug blot --type tsv
.