Cómo usar mongoimport para importar csv

Intentando importar un archivo CSV con información de contacto:

Name,Address,City,State,ZIP Jane Doe,123 Main St,Whereverville,CA,90210 John Doe,555 Broadway Ave,New York,NY,10010 

Ejecutar esto no parece agregar ningún documento a la base de datos:

 $ mongoimport -d mydb -c things --type csv --file locations.csv --headerline 

Trace dice que imported 1 objects , pero al encender el shell de Mongo y ejecutar db.things.find() no aparece ningún documento nuevo.

¿Qué me estoy perdiendo?

Tu ejemplo funcionó para mí con MongoDB 1.6.3 y 1.7.3. El siguiente ejemplo fue para 1.7.3. ¿Estás usando una versión anterior de 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 } 

Estaba perplejo con un problema similar en el que mongoimport no me daba un error pero informaba que importaba 0 registros. Había guardado mi archivo que no funcionaba usando la versión de OSX Excel para Mac 2011 usando el predeterminado “Guardar como …” “xls como csv” sin especificar específicamente el formato “Windows Comma Separated (.csv)”. Después de investigar este sitio y probar el formato “Guardar como nuevo usando Windows Comma Separated (.csv)”, mongoimport funcionó bien. Creo que mongoimport espera un carácter de nueva línea en cada línea y la exportación por defecto de Mac Excel 2011 csv no proporcionaba personaje al final de cada línea.

Necesitamos ejecutar el siguiente comando:

 mongoimport --host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline 

-d es el nombre de la base de datos

-c es el nombre de la colección

–headerline Si usa –type csv o –type tsv, utiliza la primera línea como nombres de campo. De lo contrario, mongoimport importará la primera línea como un documento distinto.

Para más información: mongoimport

lo más probable es que necesite autenticarse si trabaja en entornos de producción. Puede usar algo como esto para autenticarse contra la base de datos correcta con las credenciales apropiadas.

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

Compruebe que tiene una línea en blanco al final del archivo; de lo contrario, la última línea se ignorará en algunas versiones de mongoimport

Lo uso en el shell mongoimport

 mongoimport --db db_name --collection collection_name --type csv --file C:\\Your_file_path\target_file.csv --headerline 

tipo puede elegir csv / tsv / json Pero solo csv / tsv puede usar --headerline

Puedes leer más en el documento oficial .

Robert Stewart ya ha respondido sobre cómo importar con mongoimport.

Estoy sugiriendo una manera fácil de importar CSV elegantemente con 3T MongoChef Tool (versión 3.2+). Podría ayudar a alguien en el futuro.

  1. Solo necesitas seleccionar la colección
  2. Seleccionar archivo para importar
  3. También puede deseleccionar los datos que se van a importar. También muchas opciones están ahí.
  4. Colección importada

Vea cómo importar video

Primero deberías salir del shell mongo y luego ejecutar el comando mongoimport esta manera:

 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$ 

Las respuestas de Robert Stewart son geniales.

Me gustaría añadir que también puede escribir sus campos con –columHaveTypes y –campos como este:

 mongoimport -d myDb -c myCollection --type csv --file myCsv.csv --columnsHaveTypes --fields "label.string(),code.string(),aBoolean.boolean()" 

(Ten cuidado de no tener espacio después de la coma entre tus campos)

Para otros tipos, consulte el documento aquí: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes

C: \ wamp \ mongodb \ bin> mongoexport –db proj_mmm – ofertas de colección –csv –fieldFile offerings_fields.txt –out offerings.csv

Solo use esto después de ejecutar mongoimport

Devolverá la cantidad de objetos importados

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

devolverá la cantidad de objetos.

utilizar :

 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

verificar datos de recolección: –

 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) 

Para la versión 3.4, use la siguiente syntax:

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

Después de 3 días, finalmente lo logré por mi cuenta. Gracias a todos los usuarios que me apoyaron.

Extrañamente, nadie mencionó --uri bandera:

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

Compartir para futuros lectores:

En nuestro caso, necesitábamos agregar el parámetro de host para que funcione

 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