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

Importer en CSV-fil til MongoDB med mongoimport

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.


  1. indstille udløb for Hashmap-værdier i Redis?

  2. Hvordan HBase i CDP kan udnytte Amazons S3

  3. Hvad sker der med Meteor og Fibres/bindEnvironment()?

  4. Sådan gemmer du en kompleks indlejret JSON i Redis ved hjælp af Python