Как использовать 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() не показывает никаких новых документов.
что я упустил?
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+ версии). Может помочь кому-то в будущем.
- вам просто нужно выбрать коллекцию
- Выберите файл для импорта
- вы также можете отменить выбор данных, которые будут импортироваться. Также есть много вариантов.
- коллекция импортные
посмотреть как импортировать видео
сначала вы должны выйти из
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