Använd mongoimport verktyg för att importera data till en MongoDB-databas.
MongoDB tillhandahåller mongoimport
verktyg som kan användas för att importera JSON-, CSV- eller TSV-filer till en MongoDB-databas.
mongoimport
finns i bin-katalogen (t.ex.
/mongodb/bin
eller var du än installerade den).
För att importera data, öppna ett nytt terminal/kommandotolkfönster och skriv mongoimport
följt av parametrar som databasnamn, samlingsnamn, källfilnamn, etc.
Om du upptäcker att du inte kan köra mongoimport , se till att du antingen har lämnat mongo verktyg, eller öppnade ett nytt terminal/kommandotolkfönster innan du körde mongoexport , eftersom det är ett separat verktyg.
Importera JSON-fil
Här är ett exempel på hur du kör mongoimport
för att importera en JSON-fil.
Du kanske kommer ihåg att vi tidigare använde mongoexport för att exportera artisterna samling till en JSON-fil.
Vi släppte senare artisterna insamling helt och hållet.
Nu importerar vi den samlingen tillbaka till vår databas.
mongoimport --db music --file /data/dump/music/artists.json
Resultatmeddelande:
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
Om du inte anger ett samlingsnamn skapas en samling baserat på namnet på filen (minus eventuella tillägg).
Nu, låt oss byta tillbaka till vår mongo Terminal/Command Prompt-fönstret och hämta listan över samlingar i vår databas:
show collections
Resultat:
artists musicians producers
Nu ska vi fråga efter vår återupplivade 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" } ] }
Ange ett samlingsnamn
Du kan använda --collection
argument för att ge ett namn på samlingen som data ska gå in i.
Låt oss importera en annan fil, men den här gången, ange ett samlingsnamn:
mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json
Resultatmeddelande:
2016-07-12T14:09:01.793+0700 connected to: localhost 2016-07-12T14:09:01.849+0700 imported 1 document
Byt nu tillbaka till mongo och kontrollera listan över samlingar:
show collections
Resultatmeddelande:
artists jazz musicians producers
Och slutligen, fråga jazz samling:
db.jazz.find().pretty()
Resultatmeddelande:
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
Importera CSV-fil
Du kan importera en CSV-fil genom att använda --type csv
.
Om CSV-filen har en rubrikrad, använd --headerline
för att berätta för
mongoimport
för att använda den första raden för att bestämma namnet på fälten i det resulterande dokumentet.
Om CSV-filen inte har en rubrikrad, använd --fields
parameter för att ställa in fältnamnen.
Med rubrikrad
Här är ett exempel på att importera ett dokument med en rubrikrad.
Innehållet i 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
Importera filen:
mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv
Fråga 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" }
Utan rubrikrad
Här är en annan CSV-fil, men den här har ingen rubrikrad:
Mutt Lange, 1948 John Petrucci, 1967 DJ Shadow, 1972 George Clinton, 1941
Nu ska vi importera den och ange fältnamnen som ska användas:
mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv
Fråga 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 kommer att se att ObjectId fältet har skapats och fyllts i automatiskt åt oss.
Dessutom hade vi redan ett dokument i den här samlingen innan vi körde importen: { "_id" :1, "name" :"Bob Rock" } . Därför kan du se att importen helt enkelt har läggs till till samlingen (i motsats till att ersätta den och allt dess innehåll).
Du kan använda samma metod för att importera TSV-filer. Använd bara --type tsv
.