MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB — Importuj dane

Użyj mongoimportu narzędzie do importowania danych do bazy danych MongoDB.

MongoDB zapewnia mongoimport narzędzie, którego można użyć do importowania plików JSON, CSV lub TSV do bazy danych MongoDB.

mongoimport znajduje się w katalogu bin (np. /mongodb/bin lub gdziekolwiek go zainstalowałeś).

Aby zaimportować dane, otwórz nowe okno terminala/wiersza poleceń i wpisz mongoimport po których następują parametry, takie jak nazwa bazy danych, nazwa kolekcji, nazwa pliku źródłowego itp.

Jeśli okaże się, że nie możesz uruchomić mongoimport , upewnij się, że opuściłeś mongo narzędzie lub otworzył nowe okno terminala/wiersza polecenia przed uruchomieniem mongoexport , ponieważ jest to osobne narzędzie.

Importuj plik JSON

Oto przykład uruchomienia mongoimport aby zaimportować plik JSON.

Być może pamiętasz, że wcześniej korzystaliśmy z mongoexport wyeksportować artystów kolekcja do pliku JSON.

Później porzuciliśmy artystów kolekcja w całości.

Teraz zaimportujemy tę kolekcję z powrotem do naszej bazy danych.

mongoimport --db music --file /data/dump/music/artists.json

Wiadomość wynikowa:

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

Jeśli nie określisz nazwy kolekcji, kolekcja zostanie utworzona na podstawie nazwy pliku (bez rozszerzenia).

Wróćmy teraz do naszego mongo Okno Terminal/Command Prompt i pobierz listę kolekcji w naszej bazie danych:

show collections

Wynik:

artists
musicians
producers

Teraz zajrzymy do naszej odnowionej kolekcji.

db.artists.find()

Wynik:

{ "_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" } ] }

Określ nazwę kolekcji

Możesz użyć --collection argument, aby podać nazwę kolekcji, do której powinny trafić dane.

Zaimportujmy inny plik, ale tym razem określ nazwę kolekcji:

mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json

Wiadomość wynikowa:

2016-07-12T14:09:01.793+0700	connected to: localhost
2016-07-12T14:09:01.849+0700	imported 1 document

Teraz wróć do mongo i sprawdź listę kolekcji:

show collections

Wiadomość wynikowa:

artists
jazz
musicians
producers

I na koniec zapytaj jazz kolekcja:

db.jazz.find().pretty()

Wiadomość wynikowa:

{
	"_id" : ObjectId("578214f048ef8c6b3ffb0159"),
	"artistname" : "Miles Davis",
	"albums" : [
		{
			"album" : "Kind of Blue",
			"year" : 1959,
			"genre" : "Jazz"
		},
		{
			"album" : "Bitches Brew",
			"year" : 1970,
			"genre" : "Jazz"
		}
	]
}

Importuj plik CSV

Możesz zaimportować plik CSV, używając --type csv .

Jeśli plik CSV ma wiersz nagłówka, użyj --headerline powiedzieć mongoimport aby użyć pierwszej linii do określenia nazwy pól w wynikowym dokumencie.

Jeśli plik CSV nie ma wiersza nagłówka, użyj --fields parametr, aby ustawić nazwy pól.

Z wierszem nagłówka

Oto przykład importowania dokumentu z wierszem nagłówka.

Zawartość pliku 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

Zaimportuj plik:

mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv

Zapytanie o kolekcję:

> 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" }

Bez wiersza nagłówka

Oto inny plik CSV, ale ten nie ma wiersza nagłówka:

Mutt Lange, 1948
John Petrucci, 1967
DJ Shadow, 1972
George Clinton, 1941

Teraz zaimportujemy go i określimy nazwy pól do użycia:

mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv

Zapytanie o kolekcję:

> 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 }

Zobaczysz, że ObjectId pole zostało dla nas automatycznie utworzone i wypełnione.

Ponadto mieliśmy już jeden dokument w tej kolekcji, zanim uruchomiliśmy import: { "_id" :1, "name" :"Bob Rock" } . Widać zatem, że import po prostu dodał do kolekcji (w przeciwieństwie do zastępowania jej i całej jej zawartości).

Możesz użyć tej samej metody do importowania plików TSV. Po prostu użyj --type tsv .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. uaktualnij mongodb

  2. Policz pola w kolekcji MongoDB

  3. Jak obliczyć bieżącą sumę za pomocą agregatu?

  4. Jak przechowywać pole Date jako ISODate() za pomocą jackson w MongoDb

  5. Metody find() i findOne() w MongoDB pokazujące różne wyniki