MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB - Импортиране на данни

Използвайте 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 .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Извличане само на документи, създадени през последните 24 часа?

  2. Интеграции и услуги, достъпни от MongoDB за облака

  3. Mongodb групиране и сортиране

  4. Оптимизация на заявките на MongoDB

  5. mongoexport обобщен експорт в csv файл