sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB - Importer data

Brug mongoimport værktøj til at importere data til en MongoDB-database.

MongoDB leverer mongoimport værktøj, der kan bruges til at importere JSON-, CSV- eller TSV-filer til en MongoDB-database.

mongoimport er placeret i bin-mappen (f.eks. /mongodb/bin eller hvor du end har installeret det).

For at importere data skal du åbne et nyt terminal-/kommandopromptvindue og indtaste mongoimport efterfulgt af parametre som databasenavn, samlingsnavn, kildefilnavn osv.

Hvis du opdager, at du ikke kan køre mongoimport , vær sikker på, at du enten har forladt mongo hjælpeprogram, eller åbnet et nyt terminal-/kommandopromptvindue, før du kørte mongoexport , da det er et separat hjælpeprogram.

Importer JSON-fil

Her er et eksempel på at køre mongoimport for at importere en JSON-fil.

Du husker måske, at vi tidligere brugte mongoexport for at eksportere kunstnerne samling til en JSON-fil.

Vi droppede senere kunstnerne samlet indsamling.

Nu importerer vi den samling tilbage til vores database.

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

Resulterende besked:

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

Hvis du ikke angiver et samlingsnavn, oprettes en samling baseret på navnet på filen (minus enhver filtypenavn).

Lad os nu skifte tilbage til vores mongo Terminal-/kommandopromptvinduet og hent listen over samlinger i vores database:

show collections

Resultat:

artists
musicians
producers

Nu vil vi forespørge på vores genoplivede 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" } ] }

Angiv et samlingsnavn

Du kan bruge --collection argument for at angive et navn på den samling, som dataene skal gå ind i.

Lad os importere en anden fil, men denne gang skal du angive et samlingsnavn:

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

Resulterende besked:

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

Skift nu tilbage til mongo og tjek listen over samlinger:

show collections

Resulterende besked:

artists
jazz
musicians
producers

Og til sidst, forespørg på jazz samling:

db.jazz.find().pretty()

Resulterende besked:

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

Importer CSV-fil

Du kan importere en CSV-fil ved at bruge --type csv .

Hvis CSV-filen har en overskriftsrække, skal du bruge --headerline for at fortælle mongoimport at bruge den første linje til at bestemme navnet på felterne i det resulterende dokument.

Hvis CSV-filen ikke har en overskriftsrække, skal du bruge --fields parameter for at indstille feltnavnene.

Med overskriftsrække

Her er et eksempel på import af et dokument med en overskriftsrække.

Indholdet af 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

Importer filen:

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

Spørg 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" }

Uden overskriftsrække

Her er en anden CSV-fil, men denne har ikke en overskriftsrække:

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

Nu importerer vi det og angiver de feltnavne, der skal bruges:

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

Spørg 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 vil se, at ObjectId felt er automatisk blevet oprettet og udfyldt for os.

Desuden havde vi allerede ét dokument i denne samling, før vi kørte importen: { "_id" :1, "name" :"Bob Rock" } . Derfor kan du se, at importen blot er tilføjet til samlingen (i modsætning til at erstatte den og alt dens indhold).

Du kan bruge samme metode til at importere TSV-filer. Brug blot --type tsv .


  1. Opdel streng i en række af understrenge eller tegn i MongoDB

  2. hvordan man sender en variabel til et regex

  3. Er master altid omdisponeret instans med mindste prioritet?

  4. Hvor meget hurtigere er Redis end mongoDB?