Използвайте mongoimport помощна програма за импортиране на данни в база данни MongoDB.
MongoDB предоставя mongoimport
помощна програма, която може да се използва за импортиране на JSON, CSV или TSV файлове в база данни на MongoDB.
mongoimport
се намира в директорията bin (напр.
/mongodb/bin
или където и да сте го инсталирали).
За да импортирате данни, отворете нов прозорец на терминала/командния ред и въведете mongoimport
последвано от параметри като име на база данни, име на колекция, име на изходния файл и т.н.
Ако установите, че не можете да стартирате mongoimport , уверете се, че сте излезли от mongo помощна програма или отвори нов прозорец на терминал/команден ред, преди да стартирате mongoexport , тъй като е отделна помощна програма.
Импортиране на JSON файл
Ето пример за изпълнение на mongoimport
за да импортирате JSON файл.
Може би си спомняте, че преди използвахме mongoexport за да експортирате изпълнители колекция в JSON файл.
По-късно изхвърлихме художниците колекция като цяло.
Сега ще импортираме тази колекция обратно в нашата база данни.
mongoimport --db music --file /data/dump/music/artists.json
Резултатно съобщение:
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
Ако не посочите име на колекция, колекция се създава въз основа на името на файла (без всяко разширение).
Сега нека се върнем към нашето монго Прозорец на терминала/командния ред и извлечете списъка с колекции в нашата база данни:
show collections
Резултат:
artists musicians producers
Сега ще потърсим нашата възродена колекция.
db.artists.find()
Резултат:
{ "_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" } ] }
Посочете име на колекция
Можете да използвате --collection
аргумент за предоставяне на име на колекцията, в която трябва да влязат данните.
Нека импортираме друг файл, но този път посочете име на колекция:
mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json
Резултатно съобщение:
2016-07-12T14:09:01.793+0700 connected to: localhost 2016-07-12T14:09:01.849+0700 imported 1 document
Сега превключете обратно към mongo и проверете списъка с колекции:
show collections
Резултатно съобщение:
artists jazz musicians producers
И накрая, подайте заявка за джаз колекция:
db.jazz.find().pretty()
Резултатно съобщение:
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
Импортиране на CSV файл
Можете да импортирате CSV файл, като използвате --type csv
.
Ако CSV файлът има заглавен ред, използвайте --headerline
да кажете на
mongoimport
за да използвате първия ред, за да определите името на полетата в получения документ.
Ако CSV файлът няма заглавен ред, използвайте --fields
параметър за задаване на имената на полетата.
С заглавен ред
Ето пример за импортиране на документ със заглавен ред.
Съдържанието на CSV файла:
_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
Импортирайте файла:
mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv
Запитване за колекцията:
> 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" }
Без заглавен ред
Ето още един CSV файл, но този няма заглавен ред:
Mutt Lange, 1948 John Petrucci, 1967 DJ Shadow, 1972 George Clinton, 1941
Сега ще го импортираме и ще посочим имената на полетата, които да използваме:
mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv
Запитване за колекцията:
> 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 }
Ще видите, че ObjectId полето е автоматично създадено и попълнено за нас.
Освен това вече имахме един документ в тази колекция, преди да изпълним импортирането: { "_id" :1, "name" :"Bob Rock" } . Следователно можете да видите, че импортирането е просто добавено към колекцията (за разлика от подмяната й и цялото й съдържание).
Можете да използвате същия метод за импортиране на TSV файлове. Просто използвайте --type tsv
.