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

Eksporter en MongoDB-samling til en CSV-fil

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.


  1. Node.js + MongoDB:indsæt en og returner det nyligt indsatte dokument

  2. C# MongoDB.Driver GetServer er væk, hvad nu?

  3. Hvordan kan jeg implementere tilladelser på feltniveau til MongoDB?

  4. Arbejde med specialkarakterer i en Mongo-samling