Инструментите за база данни на MongoDB включват помощна програма, наречена mongoexport
което ви позволява да експортирате данни на MongoDB в CSV или JSON файл.
Тази статия ви показва как да използвате mongoexport
за да експортирате колекция MongoDB в CSV файл.
Синтаксис
Синтаксисът за mongoexport
става така:
mongoexport --collection=<coll> <options> <connection-string>
Трябва да стартирате mongoexport
команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).
Не стартирайте mongoexport
команди от mongo
черупка.
Експортиране на колекция
Следният примерен код експортира колекция от MongoDB:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Това експортира колекция, наречена pets
от PetHotel
база данни във файл, наречен pets.csv
в data/
папка.
Ако папката не съществува, тя е създадена. Същото и с файла. Между другото, това предполага, че няма проблеми с разрешенията при записване на файл на посоченото място.
В този пример не посочих никакъв хост, порт, удостоверяване и т.н., така че той експортира колекцията от екземпляра на MongoDB, работещ на номера на порта по подразбиране на localhost 27017
.
По-долу е обяснение на параметрите, които предоставихме тук.
Параметър | Описание |
---|---|
--db или -d | Указва базата данни, която съдържа колекцията, която искаме да експортираме. В този случай базата данни се нарича PetHotel . Алтернативно този параметър може да бъде предаден с помощта на -d (вместо --db ). |
--collection или -c | Указва колекцията, която искаме да експортираме. В този случай колекцията се нарича pets . Алтернативно този параметър може да се предава като -c (вместо --collection ). |
--type | Указва типа на експортирания файл. В този случай указваме csv за да го експортирате в CSV файл. |
--fields | Указва полетата, които искаме да експортираме. Имаме възможност да експортираме всички полета в колекцията или само някои. Тук трябва да посочите всеки един, разделен със запетая. Когато експортирате в CSV, посочването на имената на полетата е задължително. Можете да го направите чрез --fields параметър или --fieldFile параметър (повече за това по-късно). |
--out | Указва името на експортирания файл и къде ще се намира. Ако не посочите име на файл, mongoexport записва данни в стандартен изход (stdout ). |
Проверете експортирания файл
Нека проверим дали операцията по експортиране работи според очакванията.
Първо, нека проверим оригиналната колекция.
use PetHotel
db.pets.find()
Резултат:
{ "_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 }
Така можем да видим, че има 7 домашни любимци, всички със същите полета, които посочихме в нашата операция за експорт.
Сега нека отворим експортирания файл pets.csv
за да видите какво има вътре:
_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
Добре, значи всички данни са в експортирания файл, както се очаква.
Премахване на заглавки на колони
Ще забележите, че експортираният файл в предишния пример включва заглавките на колоните.
Имате и опцията да експортирате файла без заглавки на колони. За да направите това, използвайте --noHeaderLine
параметър.
Пример:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv
Сега, когато отворя експортирания файл, няма заглавки на колони:
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
Използвайте файл за имената на полетата
Можете да замените --field
параметър с --fieldFile
параметър, за да посочите името на файл, който съдържа имената на полета, които искате да експортирате.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv
Файлът, който съдържа полетата, трябва да има изброени полета, по едно на ред.
Ето какво е pets_fields.txt
файл изглеждаше така за този пример:
_id name type weight
Това доведе до това, че съдържанието на експортирания файл изглежда така:
_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
Промяна на реда на колоните
Можете да превключите реда на полетата за експортиране. Не е задължително те да са в същия ред на основния документ.
Например този код:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv
Резултати в следния CSV файл:
_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
И следното:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv
Резултатът е това:
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
Контрол на достъпа/Удостоверяване
Ако не използвате localhost, можете да използвате --host
параметър за определяне на хоста и --port
за да посочите порта. Можете също да използвате --username
параметър за определяне на потребителското име и --password
до за паролата. Ако пропуснете параметъра за парола, ще бъдете подканени да го въведете. Има и --authenticationDatabase
параметър за определяне на базата данни за удостоверяване, където е създаден потребителят.
Пример:
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
Проверете за mongoexport
mongoexport
е част от пакета MongoDB Database Tools. Инструментите за база данни на MongoDB са набор от помощни програми от командния ред за работа с MongoDB.
Ако не сте сигурни дали имате MongoDB Database Tools/mongoexport
инсталиран, опитайте да изпълните следната команда във вашия терминал или команден ред, за да проверите:
mongoexport --version
Ако го имате, трябва да видите информация за версията и т.н. Ако го нямате, можете да използвате инструкциите за инсталиране на уебсайта на MongoDB, за да го инсталирате на вашата система.
Къде да изпълнявам командите?
Не забравяйте, че трябва да стартирате mongoexport
команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).
Не ги стартирайте от mongo
черупка.