sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB - Import dat

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 .


  1. Jak můžete odstranit všechny dokumenty ze sbírky pomocí Mongoose?

  2. stránkování pole mongoDB

  3. nginx uwsgi websockets 502 Bad Gateway upstream předčasně uzavřené připojení při čtení hlavičky odpovědi z upstreamu

  4. Mongo dotaz pomocí mongoidu v aplikaci rails způsobuje chybu časového limitu kurzoru