Как использовать 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

Trace говорит imported 1 objects, но запуск оболочки Mongo и запуск db.things.find() не показывают никаких новых документов.

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

Ответ 1

Ваш пример работал на меня с 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 }

Ответ 2

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

Ответ 3

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

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 импортирует первую строку как отдельный документ.

Для получения дополнительной информации: Монгоимпорт

Ответ 4

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

mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'

Ответ 5

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

Ответ 6

Я использую это на оболочке 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

Вы можете прочитать больше на официальном документе.

Ответ 7

Роберт Стюарт уже ответил, как импортировать с помощью mongoimport.

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

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

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

Ответ 8

Сначала вы должны выйти из оболочки 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$

Ответ 9

Роберт Стюарт отвечает отлично.

Я хотел бы добавить, что вы также можете вводить свои поля с --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

Ответ 10

Для версии 3.4 используйте следующий синтаксис:

mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headerline

Через 3 дня я наконец сделал это самостоятельно. Спасибо всем пользователям, которые поддержали меня.

Ответ 11

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

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

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

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

Ответ 12

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

Ответ 13

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

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

Ответ 14

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
}

Ответ 15

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)

Ответ 16

Странно, что никто не упомянул флаг --uri:

mongoimport --uri connectionString -c questions --type csv --file questions.csv --headerline 

Ответ 17

Поделиться для будущих читателей:

В нашем случае нам нужно было добавить параметр 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

Ответ 18

Мое требование было импортировать .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

Ниже приведен скриншот того, как это выглядит после импорта:

enter image description here

где name и email - столбцы в .csv файле.

Ответ 19

Учитывая, что у меня есть файл .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.

Ответ 20

Когда я пытался импортировать файл CSV, я получал ошибку. Что я сделал. Сначала я изменил имена столбцов в строке заголовка заглавными буквами, удалил "-" и добавил "_", если это необходимо. Затем введите команду ниже для импорта CSV в Монго

$ mongoimport --db=database_name --collection=collection_name --type=csv --file=file_name.csv --headerline  

enter image description here

Ответ 21

Обязательно скопируйте файл .csv в /usr/local/bin или в любую папку, в которой находится ваш mondodb