MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да експортирате резултатите от заявката на MongoDB в CSV файл

Инструментите за база данни на MongoDB включват помощна програма, наречена mongoexport което ви позволява да експортирате данни на MongoDB в CSV или JSON файл.

Едно от нещата, които можете да правите с тази помощна програма, е да експортирате резултатите от заявката. Тази статия ви показва как да използвате mongoexport за да експортирате резултатите от заявката на MongoDB в CSV файл.

Синтаксис

Синтаксисът за mongoexport става така:

mongoexport --collection=<coll> <options> <connection-string>

Трябва да стартирате mongoexport команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).

Не стартирайте mongoexport команди от mongo черупка.

Пример

Следният примерен код експортира резултатите от заявка в CSV файл:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv

Това експортира заявка, която отправя заявки към колекция, наречена pets в PetHotel база данни. Заявката се експортира във файл, наречен dogs.csv в data/ папка.

Ако папката не съществува, тя е създадена. Същото и с файла. Между другото, това предполага, че няма проблеми с разрешенията при записване на файл на посоченото място.

В този пример не посочих никакъв хост, порт, удостоверяване и т.н., така че той експортира колекцията от екземпляра на MongoDB, работещ на номера на порта по подразбиране на localhost 27017 .

По-долу е обяснение на параметрите, които предоставихме тук.

Параметър Описание
--db
или
-d
Указва базата данни, в която да се изпълнява mongoexport . В този случай базата данни се нарича PetHotel .
Алтернативно този параметър може да бъде предаден с помощта на -d (вместо --db ).
--collection
или
-c
Указва колекцията, която искаме да експортираме (или да изпълним заявката). В този случай колекцията се нарича pets .
Алтернативно този параметър може да се предава като -c (вместо --collection ).
--type Указва типа на експортирания файл. В този случай указваме csv за да го експортирате в CSV файл.
--fields Указва полетата, които искаме да експортираме. Имаме възможност да експортираме всички полета или само някои. Тук трябва да посочите всеки един, разделен със запетая. Когато експортирате в CSV, посочването на имената на полетата е задължително. Можете да го направите чрез --fields параметър или --fieldFile параметър (повече за това по-късно).
--query
или
-q
Указва заявката, за която резултати искаме да експортираме. Това трябва да бъде затворено в единични кавички (така че да не взаимодейства с вашата обвивка).
Този параметър може да се предава и с помощта на -q .
--out Указва името на експортирания файл и къде ще се намира. Ако не посочите име на файл, mongoexport записва данни в стандартен изход (stdout ).

Проверете експортирания файл

Нека проверим дали операцията по експортиране работи според очакванията.

Първо, нека изпълним заявката спрямо оригиналната колекция.

use PetHotel
db.pets.find({ "type": "Dog" })

Резултат:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Така че можем да видим, че има 4 кучета, всички със същите полета, които посочихме в нашата операция за експортиране.

Сега нека отворим експортирания файл dogs.csv за да видите какво има вътре:

_id,name,type,weight
1,Wag,Dog,20
2,Bark,Dog,10
6,Fetch,Dog,17
7,Jake,Dog,30

Добре, значи всички данни са в експортирания файл, както се очаква.

Експортиране на по-малко полета

Можете да посочите по-малко полета с --fields параметър, ако желаете.

Пример:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.csv

Резултатен файл:

name,weight
Wag,20
Bark,10
Fetch,17
Jake,30

Премахване на заглавки на колони

Ще забележите, че експортираният файл в предишните примери включва заглавките на колоните.

Имате и опцията да експортирате файла без заглавки на колони. За да направите това, използвайте --noHeaderLine параметър.

Пример:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --noHeaderLine --out=data/dogs.csv

Сега, когато отворя експортирания файл, няма заглавки на колони:

1,Wag,Dog,20
2,Bark,Dog,10
6,Fetch,Dog,17
7,Jake,Dog,30

Използвайте файл за имената на полетата

Можете да замените --field параметър с --fieldFile параметър, за да посочите името на файл, който съдържа имената на полета, които искате да експортирате.

mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/dogs_fields.txt --query='{ "type": "Dog" }' --out=data/dogs.csv

Файлът, който съдържа полетата, трябва да има изброени полета, по едно на ред.

Ето какво означава dogs_fields.txt файл изглеждаше така за този пример:

name
type
weight

Това доведе до това, че съдържанието на експортирания файл изглежда така:

name,type,weight
Wag,Dog,20
Bark,Dog,10
Fetch,Dog,17
Jake,Dog,30

Промяна на реда на колоните

Можете да превключите реда на полетата за експортиране. Те не трябва да са в същия ред като основния документ.

Например този код:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --query='{ "type": "Dog" }' --out=data/dogs.csv

Резултати в следния CSV файл:

type,name,weight,_id
Dog,Wag,20,1
Dog,Bark,10,2
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 --query='{ "type": "Dog" }' --out=data/dogs.csv

Проверете за mongoexport

mongoexport е част от пакета MongoDB Database Tools. Инструментите за база данни на MongoDB са набор от помощни програми от командния ред за работа с MongoDB.

Ако не сте сигурни дали имате MongoDB Database Tools/mongoexport инсталиран, опитайте да изпълните следната команда във вашия терминал или команден ред, за да проверите:

mongoexport --version

Ако го имате, трябва да видите информация за версията и т.н. Ако го нямате, можете да използвате инструкциите за инсталиране на уебсайта на MongoDB, за да го инсталирате на вашата система.

Къде да изпълнявам командите?

Не забравяйте, че трябва да стартирате mongoexport команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Макс и мин в mongodb

  2. 7 начина да проверите вашата версия на MongoDB

  3. MongoDB $allElementsTrue

  4. Сравнение на дати в mongodb

  5. Поддържане на комплекти реплики на MongoDB в облака с помощта на Ansible