När du använder MongoDB kan du använda mongoimport
för att importera dokument till en samling. mongoimport
är ett kommandoradsverktyg som importerar innehåll från en utökad JSON-, CSV- eller TSV-fil. Importfilen kan ha skapats av mongoexport
eller något annat exportverktyg.
Den här artikeln presenterar exempel på hur du importerar en CSV-fil till MongoDB.
Exempel
Anta att vi har följande CSV-fil som heter pets.csv
:
_id,name,type 1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Följande kommando importerar CSV-filen till MongoDB:
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv
I det här fallet angav jag inte en samling att importera den till, så den skapade en samling med samma namn på filen (pets
).
Kontrollera resultaten
Låt oss ta en titt på samlingen.
db.pets.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Vi kan se att dokumenten importerades som förväntat.
CSV-filer utan kolumnrubriker
I föregående exempel använde vi --headerline
parameter för att ange att den första raden ska användas för fältnamnen.
Om din CSV-fil inte innehåller en rubrikrad, måste du använda antingen --fields
parametern eller --fieldFile
parameter för att ange fältnamnen.
Så tänk dig att vår CSV-fil inte hade kolumnraden och såg ut så här istället:
1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Vi kan sedan använda följande kommando för att importera filen:
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv
Det har samma resultat som föregående exempel.
Ange samlingens namn
Du kan använda --collection
(eller -c
) parameter för att ange en samling att importera filen till.
Här är ett exempel på hur du använder --collection
parameter för att importera samma fil till en annan samling:
mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv
Om samlingen inte redan finns skapas den. Om det redan finns, kommer importresultatet att bero på vilket läge du använder (mer om detta senare).
I vårt fall, så här ser den nyskapade kollektionen ut:
db.pets2.find()
Resultat:
{ "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 1, "name" : "Wag", "type" : "Dog" }
Släpp samlingen innan du importerar
Du kan använda --drop
parameter för att ta bort alla befintliga samlingar med samma namn som den du försöker skapa/importera.
Föreställ dig att vi har en andra fil, som heter pets2.csv
, med följande dokument:
_id,name,type,weight 4,"Bubbles","Fish",3
Här är vad som händer om jag importerar det dokumentet till pets2
samling med --drop
alternativ:
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv
Utdata:
2021-01-03T15:05:40.281+1000 connected to: mongodb://localhost/ 2021-01-03T15:05:40.284+1000 dropping: PetHotel.pets2 2021-01-03T15:05:40.336+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Detta talar om för oss att samlingen togs bort och ett dokument importerades.
Låt oss ta en titt på samlingen:
db.pets2.find()
Resultat:
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Som väntat är vårt nya dokument det enda i samlingen.
Importlägen
Det finns olika importlägen som du kan använda med mongoimport
. Dessa lägen avgör vad som händer om det redan finns matchande dokument i samlingen som du försöker importera till.
Lägena är följande:
Läge | Beskrivning |
---|---|
insert | Detta är standardläget. Detta läge infogar dokumenten från importfilen. Om ett matchande dokument redan finns i samlingen uppstår ett fel. Ett matchande dokument är ett som har samma unika ID (som ett matchande _id ). fält) som ett dokument i importfilen. |
upsert | Ersätter befintliga dokument i databasen med matchande dokument från importfilen. Alla andra dokument infogas. |
merge | Sammanfogar befintliga dokument som matchar ett dokument i importfilen med det nya dokumentet. Alla andra dokument infogas. |
delete | Tar bort befintliga dokument i databasen som matchar ett dokument i importfilen. Alla icke-matchande dokument har ingen effekt. |
Se Importlägen för mongoimport
för exempel på varje läge.
Kontrollera efter mongoimport
mongoimport
är en del av MongoDB Database Tools-paketet. MongoDB Database Tools är en uppsättning kommandoradsverktyg för att arbeta med MongoDB.
Om du inte är säker på om du har MongoDB Database Tools/mongoimport
installerat, prova att köra följande kommando i din terminal eller kommandotolk för att kontrollera:
mongoimport --version
Om du har det bör du se versionsinformation etc. Om du inte har det kan du använda installationsinstruktionerna på MongoDB-webbplatsen för att installera det på ditt system.
Var du ska köra mongoimport
Kommandon?
Du måste köra mongoimport
kommandon från ditt systems kommandorad (t.ex. ett nytt terminal- eller kommandotolksfönster).
Kör dem inte från mongo
skal.