Как использовать mongoimport для импорта csv

попытка импортировать 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, но запускает оболочку Mongo и работает db.things.find() не показывает никаких новых документов.

что я упустил?

17 ответов


ваш пример работал для меня с 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 }

Я был озадачен аналогичной проблемой, когда mongoimport не дал мне ошибку, но сообщил бы об импорте 0 записей. Я сохранил свой файл, который не работал, используя версию OSX Excel для Mac 2011, используя значение по умолчанию "Сохранить как"..""xls как csv" без указания " Windows, разделенных запятыми(.csv) " формат конкретно. После изучения этого сайта и попытки "сохранить как снова с помощью" Windows запятая разделена (.csv) " формат, mongoimport работал нормально. Я думаю, что mongoimport ожидает новую линию символ в каждой строке и экспорт csv Mac Excel 2011 по умолчанию не предоставили этот символ в конце каждой строки.


необходимо выполнить следующую команду:

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


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

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

проверьте, что у вас есть пустая строка в конце файла, иначе последняя строка будет проигнорирована на некоторых версиях mongoimport


Я использую это в оболочке 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

Вы можете прочитать больше о официальный док.


Роберт Стюарт уже ответил за то, как импортировать с mongoimport.

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

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

посмотреть как импортировать видео


сначала вы должны выйти из mongo оболочка, а затем выполните такой:

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$

ответы Роберта Стюарта великолепны.

Я хотел бы добавить, что вы также можете ввести свои поля с --columHaveTypes и --полями, как это:

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

(осторожно, чтобы не иметь пробел после запятой между вашими полями)

для других типов см. doc здесь: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes


C:\wamp\mongodb\bin>mongoexport --db proj_mmm --предложения коллекции --csv --fieldfile offerings_fields.txt-вне предложения.csv


просто используйте это после выполнения mongoimport

он вернет количество импортированных объектов

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

возвращает количество объектов.


использование :

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

mongoimport-D test-C test --type csv --file 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
}

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)

для версии 3.4 используйте следующий синтаксис:

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

через 3 дня я, наконец, сделал это самостоятельно. Спасибо всем пользователям, которые меня поддерживали.


странно никто не упомянул --uri флаг:

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

обмен для будущих читателей:

в нашем случае нам нужно было добавить 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