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



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

714   17  

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 и --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-columnshavetypes

C:\wamp\mongodb\bin > mongoexport --db proj_mmm --collection offerings --csv --fieldFile offerings_fields.тхт-из предложений.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

Comments

    Ничего не найдено.