Når du bruger MongoDB, kan du bruge mongoimport
at importere dokumenter til en samling. mongoimport
er et kommandolinjeværktøj, der importerer indhold fra en udvidet JSON-, CSV- eller TSV-fil. Importfilen kunne være blevet oprettet af mongoexport
eller et andet eksportværktøj.
Denne artikel præsenterer eksempler på import af en CSV-fil til MongoDB.
Eksempel
Antag, at vi har følgende CSV-fil kaldet pets.csv
:
_id,name,type 1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Følgende kommando importerer CSV-filen til MongoDB:
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv
I dette tilfælde specificerede jeg ikke en samling at importere den til, så den oprettede en samling med samme navn på filen (pets
).
Tjek resultaterne
Lad os tage et kig 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, at dokumenterne blev importeret som forventet.
CSV-filer uden kolonneoverskrifter
I det foregående eksempel brugte vi --headerline
parameter for at angive, at den første linje skal bruges til feltnavnene.
Hvis din CSV-fil ikke indeholder en overskriftslinje, skal du bruge enten --fields
parameter eller --fieldFile
parameter for at angive feltnavnene.
Så forestil dig, at vores CSV-fil ikke havde kolonnelinjen og så således ud i stedet:
1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Vi kunne derefter bruge følgende kommando til at importere filen:
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv
Det har samme resultat som det foregående eksempel.
Angiv samlingens navn
Du kan bruge --collection
(eller -c
) parameter for at angive en samling at importere filen til.
Her er et eksempel på brug af --collection
parameter for at importere den samme fil til en anden samling:
mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv
Hvis samlingen ikke allerede eksisterer, oprettes den. Hvis det allerede eksisterer, vil importresultatet afhænge af den tilstand, du bruger (mere om dette senere).
I vores tilfælde ser den nyoprettede kollektion sådan ud:
db.pets2.find()
Resultat:
{ "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 1, "name" : "Wag", "type" : "Dog" }
Slip samlingen før import
Du kan bruge --drop
parameter for at slette enhver eksisterende samling med samme navn som den, du forsøger at oprette/importere.
Forestil dig, at vi har en anden fil, kaldet pets2.csv
, med følgende dokument:
_id,name,type,weight 4,"Bubbles","Fish",3
Her er, hvad der sker, hvis jeg importerer det dokument til pets2
samling ved hjælp af --drop
mulighed:
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv
Output:
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.
Dette fortæller os, at samlingen blev droppet, og et dokument blev importeret.
Lad os tage et kig på kollektionen:
db.pets2.find()
Resultat:
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Som forventet er vores nye dokument det eneste i samlingen.
Importtilstande
Der er forskellige importtilstande, som du kan bruge med mongoimport
. Disse tilstande bestemmer, hvad der sker, hvis der allerede er matchende dokumenter i den samling, som du forsøger at importere til.
Tilstandene er som følger:
Tilstand | Beskrivelse |
---|---|
insert | Dette er standardtilstanden. Denne tilstand indsætter dokumenterne fra importfilen. Hvis der allerede findes et matchende dokument i samlingen, opstår der en fejl. Et matchende dokument er et, der har det samme unikke ID (såsom et matchende _id ). felt) som et dokument i importfilen. |
upsert | Erstatter eksisterende dokumenter i databasen med matchende dokumenter fra importfilen. Alle andre dokumenter er indsat. |
merge | Fletter eksisterende dokumenter, der matcher et dokument i importfilen, med det nye dokument. Alle andre dokumenter er indsat. |
delete | Sletter eksisterende dokumenter i databasen, der matcher et dokument i importfilen. Ikke-matchende dokumenter har ingen effekt. |
Se Importtilstande for mongoimport
for eksempler på hver tilstand.
Se efter mongoimport
mongoimport
er en del af MongoDB Database Tools-pakken. MongoDB-databaseværktøjerne er en række kommandolinjeværktøjer til at arbejde med MongoDB.
Hvis du ikke er sikker på, om du har MongoDB Database Tools/mongoimport
installeret, prøv at køre følgende kommando i din terminal eller kommandoprompt for at kontrollere:
mongoimport --version
Hvis du har det, bør du se versionsoplysninger osv. Hvis du ikke har det, kan du bruge installationsinstruktionerne på MongoDB-webstedet til at installere det på dit system.
Hvor skal mongoimport
køres Kommandoer?
Du skal køre mongoimport
kommandoer fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue).
Kør dem ikke fra mongo
skal.