sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - Importera data

Använd mongoimport verktyg för att importera data till en MongoDB-databas.

MongoDB tillhandahåller mongoimport verktyg som kan användas för att importera JSON-, CSV- eller TSV-filer till en MongoDB-databas.

mongoimport finns i bin-katalogen (t.ex. /mongodb/bin eller var du än installerade den).

För att importera data, öppna ett nytt terminal/kommandotolkfönster och skriv mongoimport följt av parametrar som databasnamn, samlingsnamn, källfilnamn, etc.

Om du upptäcker att du inte kan köra mongoimport , se till att du antingen har lämnat mongo verktyg, eller öppnade ett nytt terminal/kommandotolkfönster innan du körde mongoexport , eftersom det är ett separat verktyg.

Importera JSON-fil

Här är ett exempel på hur du kör mongoimport för att importera en JSON-fil.

Du kanske kommer ihåg att vi tidigare använde mongoexport för att exportera artisterna samling till en JSON-fil.

Vi släppte senare artisterna insamling helt och hållet.

Nu importerar vi den samlingen tillbaka till vår databas.

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

Resultatmeddelande:

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

Om du inte anger ett samlingsnamn skapas en samling baserat på namnet på filen (minus eventuella tillägg).

Nu, låt oss byta tillbaka till vår mongo Terminal/Command Prompt-fönstret och hämta listan över samlingar i vår databas:

show collections

Resultat:

artists
musicians
producers

Nu ska vi fråga efter vår återupplivade samling.

db.artists.find()

Resultat:

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

Ange ett samlingsnamn

Du kan använda --collection argument för att ge ett namn på samlingen som data ska gå in i.

Låt oss importera en annan fil, men den här gången, ange ett samlingsnamn:

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

Resultatmeddelande:

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

Byt nu tillbaka till mongo och kontrollera listan över samlingar:

show collections

Resultatmeddelande:

artists
jazz
musicians
producers

Och slutligen, fråga jazz samling:

db.jazz.find().pretty()

Resultatmeddelande:

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

Importera CSV-fil

Du kan importera en CSV-fil genom att använda --type csv .

Om CSV-filen har en rubrikrad, använd --headerline för att berätta för mongoimport för att använda den första raden för att bestämma namnet på fälten i det resulterande dokumentet.

Om CSV-filen inte har en rubrikrad, använd --fields parameter för att ställa in fältnamnen.

Med rubrikrad

Här är ett exempel på att importera ett dokument med en rubrikrad.

Innehållet i CSV-filen:

_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

Importera filen:

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

Fråga samlingen:

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

Utan rubrikrad

Här är en annan CSV-fil, men den här har ingen rubrikrad:

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

Nu ska vi importera den och ange fältnamnen som ska användas:

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

Fråga samlingen:

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

Du kommer att se att ObjectId fältet har skapats och fyllts i automatiskt åt oss.

Dessutom hade vi redan ett dokument i den här samlingen innan vi körde importen: { "_id" :1, "name" :"Bob Rock" } . Därför kan du se att importen helt enkelt har läggs till till samlingen (i motsats till att ersätta den och allt dess innehåll).

Du kan använda samma metod för att importera TSV-filer. Använd bara --type tsv .


  1. Delade sessioner mellan nodappar?

  2. problem med att ställa in selleriuppgifter backend i Python

  3. Redis - Utgångna index tas inte bort

  4. MongoDB $setIsSubset