Pregunta

El intentar 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 

Al ejecutar este no parece añadir ningún documento a la base de datos:

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

Traza dice imported 1 objects, pero encendiendo la consola mongo y funcionando db.things.find() no presenta nuevos documentos.

¿Qué me falta?

¿Fue útil?

Solución

Su ejemplo me funcionó con MongoDB 1.6.3 y 1.7.3. Ejemplo a continuación fue por 1.7.3. ¿Está utilizando 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 }

Otros consejos

Me quedé perplejo con un problema similar donde mongoimport no me dio un error, pero informarían importación 0 registros. Había salvado mi archivo que no funcionó con el OSX Excel para Mac versión 2011 usando el valor por defecto "Guardar como .." "xls csv como" sin especificar "Windows separados por comas" formato (.csv) en concreto. Después de investigar este sitio y probar el "Guardar como nuevo usando 'Windows separados por comas (.csv)' formato, mongoimport funcionó bien. Creo mongoimport espera un carácter de nueva línea en cada línea y el Mac Excel 2011 por defecto de exportación csv no establecía que carácter al final de cada línea.

Hay que 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 base de datos

-c es nombre de la colección

- headerline Si se utiliza --type CSV o TSV --type, 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 autenticarse si está trabajando en la producción de tipo de entornos. Se puede usar algo como esto para autenticarse en 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 será ignorado en algunas versiones del mongoimport

utilizo este en shell mongoimport

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

puede elegir el tipo CSV / TSV / JSON Pero sólo CSV / TSV puede utilizar --headerline

Puede leer más sobre el oficial doc .

Robert Stewart ya ha respondido a la forma de importar con mongoimport.

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

  1. Sólo tiene que seleccionar la colección
  2. Seleccionar archivo de importación
  3. También puede anular la selección de los datos que se van a importar. También hay muchas opciones allí.
  4. Colección importada

cómo importar vídeo

Lo primero que debe salir de la cáscara mongo y luego ejecutar el comando mongoimport como esto:

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 es grande.

Me gustaría añadir que también puede escribir sus campos con --columHaveTypes y --fields como esto:

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

(cuidado de no tener ningún espacio después de la coma entre sus campos)

Para otros tipos, véase el doc aquí: https: //docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes

En la versión 3.4, por favor utilice la siguiente sintaxis:

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

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

C: \ wamp \ mongodb \ bin> mongoexport --db proj_mmm --collection ofertas --csv --fieldFile offerings_fields.txt --out offerings.csv

Sólo tiene que utilizar esto después de la ejecución de mongoimport

Se volverá número de objetos importados

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

devolverá el número de objetos.

uso:

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

mongoimport -d -c prueba prueba --type csv --file SampleCSVFile_119kb.csv --headerline

Los datos de recogida de verificació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)

Por extraño que nadie la bandera --uri mencionado:

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

Intercambio de futuros lectores:

En nuestro caso, tuvimos que agregar el parámetro 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

Mi requisito era para importar el .csv (with no headline) a instancia MongoDB remoto. Para el comando mongoimport v3.0.7below trabajado para mí:

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

Por ejemplo:

mongoimport -h 1234.mlab.com:61486 -u arpitaggarwal -p password  -d my-database -c employees --file employees.csv --fields name,email --type csv

A continuación se muestra la captura de pantalla de cómo se ve después de la importación:

introducir descripción de la imagen aquí

donde name y email son las columnas en el archivo .csv.

archivo .csv Dado que tengo que sólo tiene una columna con ninguna cabecera , por debajo de comando funcionó para mí:

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

donde nombre-campo se refiere al nombre de Cabecera de la columna en el archivo .csv.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top