Как использовать Mongoimport для импорта CSV
-
11-10-2019 - |
Вопрос
Попытка импортировать 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()
не показывает никаких новых документов.
Что мне не хватает?
Решение
Ваш пример работал для меня с 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)». После изучения этого сайта и попытки «Сохранить как снова использование формата« Save Comma Compated (.csv) », Mongoimport работал нормально. Я думаю, что Mongoimport ожидает нового персонажа на каждой строке, а экспорт Mac Excel 2011 2011 не предоставил этого. персонаж в конце каждой строки.
Нам нужно выполнить следующую команду:
mongoimport --host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline
-Д Имя базы данных
-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
оболочка, а затем выполнить 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$
Ответы Роберта Стюарта великолепны.
Я хотел бы добавить, что вы также можете напечатать свои поля с помощью -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
Для версии 3.4, пожалуйста, используйте следующий синтаксис:
mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headerline
Через 3 дня я наконец сделал это самостоятельно. Спасибо всем пользователям, которые поддерживали меня.
C: wamp mongodb bin> mongoexport -db proj_mmm -Коллекционные предложения -CSV -Fieldfile предложения_fields.txt -out предложения.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)
Странно никто не упомянул --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
Моим требованием было импортировать .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
файл.
Данный .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
файл.