Použijte mongoimport nástroj pro import dat do databáze MongoDB.
MongoDB poskytuje mongoimport
nástroj, který lze použít k importu souborů JSON, CSV nebo TSV do databáze MongoDB.
mongoimport
je umístěn v adresáři bin (např.
/mongodb/bin
nebo kdekoli jste jej nainstalovali).
Chcete-li importovat data, otevřete nové okno terminálu/příkazového řádku a zadejte mongoimport
následované parametry, jako je název databáze, název kolekce, název zdrojového souboru atd.
Pokud zjistíte, že nemůžete spustit mongoimport , ujistěte se, že jste buď opustili mongo nebo před spuštěním mongoexport otevřeli nové okno terminálu/příkazového řádku , protože se jedná o samostatný nástroj.
Importujte soubor JSON
Zde je příklad spuštění mongoimport
pro import souboru JSON.
Možná si pamatujete, že jsme dříve používali mongoexport exportovat umělce kolekce do souboru JSON.
Později jsme vypustili umělce sbírka celkem.
Nyní tuto kolekci importujeme zpět do naší databáze.
mongoimport --db music --file /data/dump/music/artists.json
Výsledná zpráva:
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
Pokud nezadáte název kolekce, bude kolekce vytvořena na základě názvu souboru (bez přípony).
Nyní se vraťme k našemu mongo Okno terminálového/příkazového řádku a načtěte seznam sbírek v naší databázi:
show collections
Výsledek:
artists musicians producers
Nyní se zeptáme na naši obnovenou sbírku.
db.artists.find()
Výsledek:
{ "_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" } ] }
Zadejte název kolekce
Můžete použít --collection
argument pro zadání názvu kolekce, do které mají data vstoupit.
Pojďme importovat další soubor, ale tentokrát zadejte název kolekce:
mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json
Výsledná zpráva:
2016-07-12T14:09:01.793+0700 connected to: localhost 2016-07-12T14:09:01.849+0700 imported 1 document
Nyní přepněte zpět na mongo a zkontrolujte seznam sbírek:
show collections
Výsledná zpráva:
artists jazz musicians producers
A nakonec dotaz na jazz kolekce:
db.jazz.find().pretty()
Výsledná zpráva:
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
Importovat soubor CSV
Soubor CSV můžete importovat pomocí --type csv
.
Pokud má soubor CSV řádek záhlaví, použijte --headerline
říct
mongoimport
k určení názvu polí ve výsledném dokumentu pomocí prvního řádku.
Pokud soubor CSV nemá řádek záhlaví, použijte --fields
parametr pro nastavení názvů polí.
S řádkem záhlaví
Zde je příklad importu dokumentu s řádkem záhlaví.
Obsah souboru 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
Importujte soubor:
mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv
Dotaz na kolekci:
> 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 řádku záhlaví
Zde je další soubor CSV, ale tento nemá řádek záhlaví:
Mutt Lange, 1948 John Petrucci, 1967 DJ Shadow, 1972 George Clinton, 1941
Nyní jej naimportujeme a určíme názvy polí, která se mají použít:
mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv
Dotaz na kolekci:
> 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 }
Uvidíte, že ObjectId pole bylo automaticky vytvořeno a vyplněno za nás.
Před spuštěním importu jsme také měli v této kolekci jeden dokument: { "_id" :1, "name" :"Bob Rock" } . Proto můžete vidět, že import se jednoduše přidal do sbírky (na rozdíl od jejího nahrazení a celého jejího obsahu).
Stejnou metodu můžete použít k importu souborů TSV. Jednoduše použijte --type tsv
.