Как использовать mongoimport для импорта CSV

126

Попытка импортировать 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() не показывают никаких новых документов.

Что мне не хватает?

  • 0
    Вы пытались use mydb до db.things.find() ?
  • 1
    Да - все еще показывает другой документ, который был в db.things
Показать ещё 1 комментарий
Теги:
csv
import
mongoimport

11 ответов

185
Лучший ответ

Ваш пример работал на меня с 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 }
  • 6
    Спасибо! Это работает для меня. Раньше я делал то же самое, за исключением создания CSV, как вы. Пробовал, и это сработало надлежащим образом. Я создал оригинальный файл в MS Excel, поэтому предположил, что в конце каждой строки была проблема с переводом строки.
  • 0
    У меня тоже сработало. Я сохранил файл с окончанием строки LF на OS X, и это сработало.
Показать ещё 7 комментариев
25

Я был озадачен аналогичной проблемой, когда mongoimport не дал мне ошибку, но сообщит об импорте 0 записей. Я сохранил файл, который не работал, используя версию OSX Excel для Mac 2011, используя по умолчанию "Сохранить как.." "xls as csv", не указав конкретно формат "Windows Comma Separated (.csv)". Изучив этот сайт и попробовав "Сохранить как снова" с использованием формата Windows Comma Separated (.csv), mongoimport работал нормально. Я думаю, что mongoimport ожидает символа новой строки в каждой строке, а экспорт csv по умолчанию Mac Excel 2011 не предусматривает, что символ в конце каждой строки.

  • 0
    Excel действительно странный зверь при обработке файлов CSV, который также включает в себя попытку импортировать файлы CSV в другие базы данных, это не является строго проблемой, связанной с Монго. Я бы предложил использовать Google Sheets при игре с CSV, это бесплатно, онлайн и позволяет импортировать / экспортировать правильно отформатированные CSV и TSV.
5

Нам нужно выполнить следующую команду:

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

3

Убедитесь, что у вас есть пустая строка в конце файла, иначе последняя строка будет проигнорирована в некоторых версиях mongoimport

1

Сначала вы должны выйти из оболочки 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$
  • 0
    $ mongoimport -d marketdata -c мини-бары --type csv --headerline --file '/Users/Aditya/Downloads/mstf.csv' Гарантированный результат, полученный Маноджем Бариком
1

вам, скорее всего, потребуется пройти аутентификацию, если вы работаете в производственной среде. Вы можете использовать что-то вроде этого для аутентификации против правильной базы данных с соответствующими учетными данными.

mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
1
Роберт Стюарт уже ответил, как импортировать с помощью mongoimport.

Я предлагаю простой способ импорта CSV с помощью 3T MongoChef Инструмент (версия 3.2+). Может помочь кому-то в будущем.

  • Вам просто нужно выбрать коллекцию
  • Выберите файл для импорта
  • Вы также можете отменить выбор данных, которые будут импортированы. Также есть много вариантов.
  • Коллекция импортирована

Смотрите как импортировать видео

0

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
}
0

использовать:

mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv
0

C:\wamp\mongodb\bin > mongoexport --db proj_mmm - предложения для размещения --csv --fieldFile offers_fields.txt --out offerings.csv

0

Просто используйте это после выполнения mongoimport

Он вернет количество импортированных объектов

use db
db.collectionname.find().count()

вернет число объектов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню