sql >> Databasteknik >  >> NoSQL >> MongoDB

Importera en CSV-fil till MongoDB med mongoimport

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.


  1. Förstå Meteor Publicera / Prenumerera

  2. Hur får man objekt-id:t i PyMongo efter en infogning?

  3. Cloudera Operational Database Repplication i ett nötskal

  4. hur kan jag se vilka portar mongo lyssnar på från mongo shell?