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