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

Импортирайте CSV файл в MongoDB с mongoimport

Когато използвате 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 черупка.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да подобрим производителността на вмъкване на MongoDB

  2. mongodb :Увеличаване на максималните връзки в mongodb

  3. Mongoose:CastError:Прехвърлянето към ObjectId не бе успешно за стойност [object Object] на път _id

  4. Как да използвам Map/Reduce в MongoDB?

  5. Ръководство за внедряване и поддръжка на MongoDB с помощта на Puppet:Част 2