Попытка импортировать 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
Trace говорит imported 1 objects
, но запуск оболочки Mongo и запуск 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 as csv", не указав конкретно формат "Windows Comma Separated (.csv)". Изучив этот сайт и попробовав "Сохранить как снова" с использованием формата Windows Comma Separated (.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 - имя коллекции
- заголовок Если используется --type csv или --type tsv, первая строка используется как имена полей. В противном случае mongoimport импортирует первую строку как отдельный документ.
Для получения дополнительной информации: mongoimport
Убедитесь, что у вас есть пустая строка в конце файла, иначе последняя строка будет проигнорирована в некоторых версиях mongoimport
Сначала вы должны выйти из оболочки 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$
вам, скорее всего, потребуется пройти аутентификацию, если вы работаете в производственной среде. Вы можете использовать что-то вроде этого для аутентификации против правильной базы данных с соответствующими учетными данными.
mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
Я предлагаю простой способ импорта CSV с помощью 3T MongoChef Инструмент (версия 3.2+). Может помочь кому-то в будущем.
Смотрите как импортировать видео
проверить данные коллекции: -
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
}
использовать:
mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv
C:\wamp\mongodb\bin > mongoexport --db proj_mmm - предложения для размещения --csv --fieldFile offers_fields.txt --out offerings.csv
Просто используйте это после выполнения mongoimport
Он вернет количество импортированных объектов
use db
db.collectionname.find().count()
вернет число объектов.
use mydb
доdb.things.find()
?