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
.