MongoDB-databaseværktøjerne inkluderer et hjælpeprogram kaldet mongoexport
der giver dig mulighed for at eksportere MongoDB-data til en CSV- eller JSON-fil.
Denne artikel viser dig, hvordan du bruger mongoexport
at eksportere en MongoDB-samling til en CSV-fil.
Syntaks
Syntaksen for mongoexport
går sådan her:
mongoexport --collection=<coll> <options> <connection-string>
Du skal køre mongoexport
kommandoer fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue).
Kør ikke mongoexport
kommandoer fra mongo
skal.
Eksporter en samling
Følgende eksempelkode eksporterer en samling fra MongoDB:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Dette eksporterer en samling kaldet pets
fra PetHotel
database til en fil kaldet pets.csv
i data/
folder.
Hvis mappen ikke eksisterer, er den oprettet. Det samme med filen. Det forudsætter i øvrigt, at der ikke er nogen tilladelsesproblemer med at skrive en fil til den angivne placering.
I dette eksempel har jeg ikke angivet nogen vært, port, godkendelse osv., så den eksporterer samlingen fra MongoDB-instansen, der kører på standard localhost-portnummeret 27017
.
Nedenfor er en forklaring af de parametre, vi har leveret her.
Parameter | Beskrivelse |
---|---|
--db eller -d | Specificerer den database, der indeholder den samling, vi ønsker at eksportere. I dette tilfælde kaldes databasen PetHotel . Denne parameter kan alternativt sendes med -d (i stedet for --db ). |
--collection eller -c | Specificerer den samling, vi ønsker at eksportere. I dette tilfælde kaldes samlingen pets . Denne parameter kan alternativt overføres som -c (i stedet for --collection ). |
--type | Specificerer den eksporterede filtype. I dette tilfælde angiver vi csv for at eksportere den til en CSV-fil. |
--fields | Specificerer de felter, som vi ønsker at eksportere. Vi har mulighed for at eksportere alle felter i samlingen, eller blot nogle. Du skal angive hver enkelt her, adskilt af et komma. Ved eksport til CSV er det et krav at angive feltnavnene. Du kan gøre det via --fields parameter eller --fieldFile parameter (mere om det senere). |
--out | Specificerer det eksporterede filnavn og hvor det vil blive placeret. Hvis du ikke angiver et filnavn, mongoexport skriver data til standard output (stdout ). |
Tjek den eksporterede fil
Lad os kontrollere, at eksportoperationen fungerede som forventet.
Lad os først tjekke den originale samling.
use PetHotel
db.pets.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Så vi kan se, at der er 7 kæledyr, alle med de samme felter, som vi specificerede i vores eksportoperation.
Lad os nu åbne den eksporterede fil pets.csv
for at se, hvad der er indeni:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
OK, så alle data er i den eksporterede fil som forventet.
Fjern kolonneoverskrifter
Du vil bemærke, at den eksporterede fil i det foregående eksempel inkluderede kolonneoverskrifterne.
Du har også mulighed for at eksportere filen uden kolonneoverskrifter. For at gøre dette skal du bruge --noHeaderLine
parameter.
Eksempel:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv
Når jeg nu åbner den eksporterede fil, er der ingen kolonneoverskrifter:
1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Brug en fil til feltnavnene
Du kan erstatte --field
parameter med --fieldFile
parameter for at angive navnet på en fil, der indeholder de feltnavne, som du vil eksportere.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv
Filen, der indeholder felterne, skal have felterne anført, én pr. linje.
Her er hvad pets_fields.txt
fil så ud for dette eksempel:
_id name type weight
Dette resulterede i, at indholdet af den eksporterede fil så således ud:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Ændring af kolonnerækkefølgen
Du kan ændre rækkefølgen af felterne til eksport. De behøver ikke at være i samme rækkefølge som det underliggende dokument.
For eksempel denne kode:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv
Resulterer i følgende CSV-fil:
_id,weight,type,name 1,20,Dog,Wag 2,10,Dog,Bark 3,7,Cat,Meow 4,8,Cat,Scratch 5,3,Bat,Bruce 6,17,Dog,Fetch 7,30,Dog,Jake
Og følgende:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv
Dette resulterer i:
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 Cat,Meow,7,3 Cat,Scratch,8,4 Bat,Bruce,3,5 Dog,Fetch,17,6 Dog,Jake,30,7
Adgangskontrol/godkendelse
Hvis du ikke bruger localhost, kan du bruge --host
parameter for at angive værten og --port
for at angive porten. Du kan også bruge --username
parameter for at angive brugernavnet og --password
til for adgangskoden. Hvis du udelader adgangskodeparameteren, bliver du bedt om det. Der er også en --authenticationDatabase
parameter til at angive godkendelsesdatabasen, hvor brugeren er oprettet.
Eksempel:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Se efter mongoexport
mongoexport
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/mongoexport
installeret, prøv at køre følgende kommando i din terminal eller kommandoprompt for at kontrollere:
mongoexport --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 kommandoerne køres?
Glem ikke, du skal køre mongoexport
kommandoer fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue).
Kør dem ikke fra mongo
skal.