Як використовувати mongoimport для імпорту CSV


190

Спроба імпортувати CSV з контактною інформацією:

Name,Address,City,State,ZIP  
Jane Doe,123 Main St,Whereverville,CA,90210  
John Doe,555 Broadway Ave,New York,NY,10010 

Запуск цього, схоже, не додає жодних документів до бази даних:

$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline

Трейс каже imported 1 objects, але вистрілення снаряда Монго і запуску db.things.find()не показує нових документів.

Що я пропускаю?


1
ви пробували use mydbраніше db.things.find()?
Кайл Дикий

1
Так - як і раніше показує інший документ, який був у db.things
Joe

для імпорту CSV до колекції вкладених документів (із піддокументами
Raffael

Відповіді:


244

Ваш приклад працював для мене з MongoDB 1.6.3 та 1.7.3. Приклад нижче був для 1.7.3. Використовуєте старішу версію MongoDB?

$ cat > locations.csv
Name,Address,City,State,ZIP
Jane Doe,123 Main St,Whereverville,CA,90210
John Doe,555 Broadway Ave,New York,NY,10010
 ctrl-d
$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline
connected to: 127.0.0.1
imported 3 objects
$ mongo
MongoDB shell version: 1.7.3
connecting to: test
> use mydb
switched to db mydb
> db.things.find()
{ "_id" : ObjectId("4d32a36ed63d057130c08fca"), "Name" : "Jane Doe", "Address" : "123 Main St", "City" : "Whereverville", "State" : "CA", "ZIP" : 90210 }
{ "_id" : ObjectId("4d32a36ed63d057130c08fcb"), "Name" : "John Doe", "Address" : "555 Broadway Ave", "City" : "New York", "State" : "NY", "ZIP" : 10010 }

7
Дякую! Це працює для мене. Я робив те саме, що раніше, за винятком створення CSV, як ви. Спробував це, і це працювало належним чином. Я створив оригінальний файл у MS Excel, тому здогадуючись, що в кінці кожного рядка виникла проблема з новим рядком.
Джо

Працював і для мене. Я зберег файл із закінченням рядка LF на OS X і він працював.
Хаш

Чи можливо імпортувати всі записи з csv лише в 1 об'єкт замість 1 об'єкта на запис?
Анікет Капсе

Так, тримайтеся подалі від Word, коли робите CSV. У мене було те саме питання. Про помилки в Word і в mongoimport теж :(
Метт Флетчер

2
Щоб мати можливість аутентифікувати під час імпорту, ви можете зробитиmongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
blueskin

29

Мене вразила подібна проблема, коли mongoimport не видав мені помилки, але повідомив про імпорт 0 записів. Я зберегла свій файл, який не працював за допомогою версії OSX Excel для Mac 2011, використовуючи за замовчуванням "Зберегти як .." "xls as csv", не конкретизуючи "Формат Windows, розділений комами (.csv)". Дослідивши цей сайт і спробувавши "Зберегти як знову" у форматі "Windows Comma-Separated (.csv)", mongoimport спрацював нормально. Я думаю, що mongoimport очікує, що символ нового рядка буде в кожному рядку, а експорт CSV-файлів Mac Excel 2011 за замовчуванням не забезпечив це символ у кінці кожного рядка.


Excel - це справді дивна звіра при обробці файлів CSV, що включає також спроби імпорту CSV-файлів на інші бази даних, це не є суворо проблемою, пов'язаною з монго. Я б запропонував використовувати Google Таблиці, коли граєте з CSV, це безкоштовно, в Інтернеті та дозволяє також імпортувати / експортувати правильно відформатовані CSV та TSV
MacK

21

Нам потрібно виконати таку команду:

mongoimport --host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline

-d - ім'я бази даних

-c - назва колекції

--headerline Якщо використовується --type csv або --type tsv, використовується перший рядок як імена полів. В іншому випадку, mongoimport імпортує перший рядок як окремий документ.

Для отримання додаткової інформації: mongoimport


6

вам, швидше за все, знадобиться автентифікація, якщо ви працюєте у виробничих середовищах. Ви можете використовувати щось подібне для автентифікації проти правильної бази даних за допомогою відповідних облікових даних.

mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'

3

Перевірте, чи є в кінці файлу порожній рядок, інакше останній рядок буде ігноровано в деяких версіях mongoimport


3

Я використовую це на оболонці mongoimport

mongoimport --db db_name --collection collection_name --type csv --file C:\\Your_file_path\target_file.csv --headerline

тип може вибрати csv / tsv / json, але використовувати лише csv / tsv --headerline

Більше можна прочитати на офіційному документі .


1

Роберт Стюарт вже відповів, як імпортувати монгоімпорт.

Я пропоную простий спосіб імпортувати CSV елегантно за допомогою інструмента 3T MongoChef (версія 3.2+). Може допомогти комусь у майбутньому.

  1. Вам просто потрібно вибрати колекцію
  2. Виберіть файл для імпорту
  3. Ви також можете скасувати вибір даних, які збираються імпортувати. Також є багато варіантів.
  4. Колекція імпортується

Подивіться, як імпортувати відео


1

Спочатку слід вийти з mongoоболонки, а потім виконати mongoimportкоманду так:

Manojs-MacBook-Air:bin Aditya$ mongoimport -d marketdata -c minibars 
--type csv 
--headerline
--file '/Users/Aditya/Downloads/mstf.csv'

2017-05-13T20:00:41.989+0800    connected to: localhost
2017-05-13T20:00:44.123+0800    imported 97609 documents
Manojs-MacBook-Air:bin Aditya$

$ mongoimport -d marketdata -c minibar --type csv --headerline --file '/Users/Aditya/Downloads/mstf.csv' Гарантований результат, випробуваний
Маноєм Бариком

1

Відповіді Роберта Стюарта чудові.

Я хотів би додати, що ви також можете вводити свої поля за допомогою --columHaveTypes та --fields таким чином:

mongoimport -d myDb -c myCollection --type csv --file myCsv.csv 
  --columnsHaveTypes --fields "label.string(),code.string(),aBoolean.boolean()"

(Обережно, щоб не було місця після коми після ваших полів)

Для інших типів дивіться документ тут: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport- Columnhavetypes


1

Для версії 3.4 використовуйте наступний синтаксис:

mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headerline

Через 3 дні я нарешті зробив це самостійно. Дякую всім користувачам, які мене підтримали.


є друкарня, --headerline,
Кумар

1

Коли я намагався імпортувати файл CSV, у мене з’явилася помилка. Що я зробив. Спочатку я змінив назви стовпців заголовка рядка з великої літери та видалив "-" та додав "_" за потреби. Потім введіть команду нижче для імпорту CSV в mongo

$ mongoimport --db=database_name --collection=collection_name --type=csv --file=file_name.csv --headerline  

введіть тут опис зображення


Працювали як Чарівність! Згадана вище відповідь стосувалася старих версій MongoDB.
Рагхав Шарма

0

C: \ wamp \ mongodb \ bin> mongoexport --db proj_mmm - пропозиції колекцій --csv --fieldFile offers_fields.txt --out offers.csv


0

Просто використовуйте це після виконання mongoimport

Він поверне кількість імпортованих об'єктів

use db
db.collectionname.find().count()

поверне кількість об’єктів.


0

використання:

mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv

0

mongoimport -d test -c test --type csv --файл SampleCSVFile_119kb.csv --headerline

перевірити дані колекції: -

var collections = db.getCollectionNames();

for(var i = 0; i< collections.length; i++)
{    
   print('Collection: ' + collections[i]);
   // print the name of each collection
   
   db.getCollection(collections[i]).find().forEach(printjson);
   
   //and then print the json of each of its elements
}


0
1]We can save xsl as .csv file
2] Got to MongoDB bin pathon cmd - > cd D:\Arkay\soft\MongoDB\bin
3] Run below command
> mongoimport.exe -d dbname -c collectionname --type csv --file "D:\Arkay\test.csv" --headerline
4] Verify on Mongo side using below coomand.
>db.collectioname.find().pretty().limit(1)

0

Як не дивно ніхто не згадував --uriпрапор:

mongoimport --uri connectionString -c questions --type csv --file questions.csv --headerline 

0

Спільний доступ для майбутніх читачів:

У нашому випадку нам потрібно було додати hostпараметр, щоб він працював

mongoimport -h mongodb://someMongoDBhostUrl:somePORTrunningMongoDB/someDB -d someDB -c someCollection -u someUserName -p somePassword --file someCSVFile.csv --type csv --headerline --host=127.0.0.1

0

Моєю вимогою було імпортувати .csv (with no headline)віддалений MongoDBекземпляр. Для mongoimport v3.0.7нижче команда працювала для мене:

mongoimport -h <host>:<port> -u <db-user> -p <db-password>  -d <database-name> -c <collection-name> --file <csv file location> --fields <name of the columns(comma seperated) in csv> --type csv

Наприклад:

mongoimport -h 1234.mlab.com:61486 -u arpitaggarwal -p password  -d my-database -c employees --file employees.csv --fields name,email --type csv

Нижче наведено скріншот, як це виглядає після імпорту:

введіть тут опис зображення

де nameі emailє стовпці у .csvфайлі.


0

Даний .csvфайл, у якого є лише один стовпець без заголовка , нижче команда працювала для мене:

mongoimport -h <mongodb-host>:<mongodb-port> -u <username> -p <password> -d <mongodb-database-name> -c <collection-name> --file file.csv --fields <field-name> --type csv

де ім'я поля посилається на ім'я заголовка стовпця у .csvфайлі.


0

Обов’язково скопіюйте .csv файл у / usr / local / bin або будь-яку іншу папку, у якій знаходиться mondodb

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.