Когато използвате MongoDB, можете да използвате mongoimport
за импортиране на документи в колекция. mongoimport
е помощна програма на командния ред, която импортира съдържание от разширен JSON, CSV или TSV файл. Файлът за импортиране може да е създаден от mongoexport
или някаква друга помощна програма за експортиране.
Тази статия представя примери за импортиране на CSV файл в MongoDB.
Пример
Да предположим, че имаме следния CSV файл, наречен pets.csv
:
_id,name,type 1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Следната команда импортира CSV файла в MongoDB:
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv
В този случай не посочих колекция, в която да я импортирам, така че създаде колекция със същото име на файла (pets
).
Проверете резултатите
Нека да разгледаме колекцията.
db.pets.find()
Резултат:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Виждаме, че документите са импортирани според очакванията.
CSV файлове без заглавки на колони
В предишния пример използвахме --headerline
параметър, за да посочите, че първият ред трябва да се използва за имената на полетата.
Ако вашият CSV файл не съдържа заглавен ред, ще трябва да използвате или --fields
параметър или --fieldFile
параметър за определяне на имената на полетата.
И така, представете си, че нашият CSV файл няма реда на колоната и вместо това изглеждаше така:
1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
След това можем да използваме следната команда, за да импортираме файла:
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv
Това има същия резултат като предишния пример.
Посочете името на колекцията
Можете да използвате --collection
(или -c
) параметър, за да посочите колекция, в която да импортирате файла.
Ето пример за използване на --collection
параметър за импортиране на същия файл в различна колекция:
mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv
Ако колекцията все още не съществува, тя ще бъде създадена. Ако вече съществува, тогава резултатът от импортирането ще зависи от режима, който използвате (повече за това по-късно).
В нашия случай ето как изглежда новосъздадената колекция:
db.pets2.find()
Резултат:
{ "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 1, "name" : "Wag", "type" : "Dog" }
Изхвърлете колекцията преди импортиране
Можете да използвате --drop
параметър, за да премахнете всяка съществуваща колекция със същото име като тази, която се опитвате да създадете/импортирате.
Представете си, че имаме втори файл, наречен pets2.csv
, със следния документ:
_id,name,type,weight 4,"Bubbles","Fish",3
Ето какво се случва, ако импортирам този документ в pets2
колекция с помощта на --drop
опция:
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv
Изход:
2021-01-03T15:05:40.281+1000 connected to: mongodb://localhost/ 2021-01-03T15:05:40.284+1000 dropping: PetHotel.pets2 2021-01-03T15:05:40.336+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Това ни казва, че колекцията е прекратена и един документ е импортиран.
Нека да разгледаме колекцията:
db.pets2.find()
Резултат:
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Както се очакваше, нашият нов документ е единственият в колекцията.
Режими на импортиране
Има различни режими на импортиране, които можете да използвате с mongoimport
. Тези режими определят какво ще се случи, ако вече има съвпадащи документи в колекцията, в която се опитвате да импортирате.
Режимите са както следва:
Режим | Описание |
---|---|
insert | Това е режимът по подразбиране. Този режим вмъква документите от файла за импортиране. Ако съвпадащ документ вече съществува в колекцията, възниква грешка. Съвпадащ документ е този, който има същия уникален идентификатор (като съвпадащ _id поле) като документ във файла за импортиране. |
upsert | Заменя съществуващите документи в базата данни със съвпадащи документи от файла за импортиране. Всички останали документи са вмъкнати. |
merge | Обединява съществуващи документи, които съответстват на документ във файла за импортиране с новия документ. Всички останали документи са вмъкнати. |
delete | Изтрива съществуващи документи в базата данни, които съответстват на документ във файла за импортиране. Всички несъответстващи документи нямат ефект. |
Вижте Режимите на импортиране на mongoimport
за примери за всеки режим.
Проверете за mongoimport
mongoimport
е част от пакета MongoDB Database Tools. Инструментите за база данни на MongoDB са набор от помощни програми от командния ред за работа с MongoDB.
Ако не сте сигурни дали имате MongoDB Database Tools/mongoimport
инсталиран, опитайте да изпълните следната команда във вашия терминал или команден ред, за да проверите:
mongoimport --version
Ако го имате, трябва да видите информация за версията и т.н. Ако го нямате, можете да използвате инструкциите за инсталиране на уебсайта на MongoDB, за да го инсталирате на вашата система.
Къде да стартирате mongoimport
Команди?
Трябва да стартирате mongoimport
команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).
Не ги стартирайте от mongo
черупка.