Cómo utilizar mongoimport a la importación CSV
-
11-10-2019 - |
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?
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.
- Sólo tiene que seleccionar la colección
- Seleccionar archivo de importación
- También puede anular la selección de los datos que se van a importar. También hay muchas opciones allí.
- Colección importada
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.7
below 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:
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
.