MongoDBs databasverktyg inkluderar ett verktyg som heter mongoexport
som gör att du kan exportera MongoDB-data till en CSV- eller JSON-fil.
Den här artikeln visar hur du använder mongoexport
för att exportera en MongoDB-samling till en CSV-fil.
Syntax
Syntaxen för mongoexport
går så här:
mongoexport --collection=<coll> <options> <connection-string>
Du måste köra mongoexport
kommandon från ditt systems kommandorad (t.ex. ett nytt terminal- eller kommandotolkfönster).
Kör inte mongoexport
kommandon från mongo
skal.
Exportera en samling
Följande exempelkod exporterar en samling från MongoDB:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Detta exporterar en samling som heter pets
från PetHotel
databas till en fil som heter pets.csv
i data/
mapp.
Om mappen inte finns skapas den. Samma sak med filen. Detta förutsätter förresten att det inte finns några behörighetsproblem med att skriva en fil till den angivna platsen.
I det här exemplet angav jag inte någon värd, port, autentisering, etc, så den exporterar samlingen från MongoDB-instansen som körs på standardvärdens portnummer 27017
.
Nedan finns en förklaring av parametrarna som vi har tillhandahållit här.
Parameter | Beskrivning |
---|---|
--db eller -d | Anger databasen som innehåller samlingen vi vill exportera. I det här fallet kallas databasen PetHotel . Denna parameter kan alternativt skickas med -d (istället för --db ). |
--collection eller -c | Anger samlingen vi vill exportera. I det här fallet kallas samlingen pets . Denna parameter kan alternativt skickas som -c (istället för --collection ). |
--type | Anger den exporterade filtypen. I det här fallet anger vi csv för att exportera den till en CSV-fil. |
--fields | Anger fälten som vi vill exportera. Vi har möjlighet att exportera alla fält i samlingen, eller bara några. Du måste lista var och en här, avgränsade med kommatecken. Vid export till CSV är det ett krav att ange fältnamnen. Du kan göra det via --fields parametern eller --fieldFile parameter (mer om det senare). |
--out | Anger det exporterade filnamnet och var den kommer att finnas. Om du inte anger ett filnamn, mongoexport skriver data till standardutgång (stdout ). |
Kontrollera den exporterade filen
Låt oss verifiera att exporten fungerade som förväntat.
Låt oss först kontrollera den ursprungliga samlingen.
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 att det finns 7 husdjur, alla med samma fält som vi angav i vår exportverksamhet.
Låt oss nu öppna den exporterade filen pets.csv
för att se vad som finns inuti:
_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å all data finns i den exporterade filen som förväntat.
Ta bort kolumnrubriker
Du kommer att märka att den exporterade filen i föregående exempel innehöll kolumnrubriker.
Du har också möjlighet att exportera filen utan kolumnrubriker. För att göra detta, använd --noHeaderLine
parameter.
Exempel:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv
Nu när jag öppnar den exporterade filen finns det inga kolumnrubriker:
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
Använd en fil för fältnamnen
Du kan ersätta --field
parametern med --fieldFile
parameter för att ange namnet på en fil som innehåller fältnamnen som du vill exportera.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv
Filen som innehåller fälten måste ha fälten listade, ett per rad.
Här är vad pets_fields.txt
filen såg ut som för detta exempel:
_id name type weight
Detta resulterade i att innehållet i den exporterade filen såg ut så här:
_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
Ändra kolumnordningen
Du kan ändra ordningen på fälten för export. De behöver inte vara i samma ordning som det underliggande dokumentet.
Till exempel denna kod:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv
Resultat i följande 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
Och följande:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv
Resultat i detta:
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
Åtkomstkontroll/autentisering
Om du inte använder localhost kan du använda --host
parameter för att ange värden och --port
för att ange porten. Du kan också använda --username
parameter för att ange användarnamn och --password
till för lösenordet. Om du utelämnar lösenordsparametern kommer du att bli tillfrågad om den. Det finns också en --authenticationDatabase
parameter för att ange den autentiseringsdatabasen där användaren har skapats.
Exempel:
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
Kontrollera efter mongoexport
mongoexport
ä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/mongoexport
installerat, prova att köra följande kommando i din terminal eller kommandotolk för att kontrollera:
mongoexport --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 kör man kommandona?
Glöm inte att du måste köra mongoexport
kommandon från ditt systems kommandorad (t.ex. ett nytt terminal- eller kommandotolkfönster).
Kör dem inte från mongo
skal.