sql >> Base de Datos >  >> NoSQL >> MongoDB

Importe datos CSV como una matriz en MongoDB usando mongoimport

Utilidad de importación de MongoDB:mongoimport – introdujo un nuevo parámetro que le permite importar datos CSV como una matriz.

--useArrayIndexFields El parámetro interpreta los números naturales en los campos como índices de matriz al importar archivos CSV o TSV.

Ejemplo

Supongamos que tenemos un archivo CSV llamado tags.csv que se ve así:

tags.0,tags.1,tags.2,tags.3
html,css,sql,xml

Podemos importar eso usando --useArrayIndexFields parámetro, lo que hará que mongoimport para interpretar los números en los encabezados de columna como índices de matriz.

Ejemplo:

mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv

Salida:

2021-01-03T20:55:44.284+1000	no collection specified
2021-01-03T20:55:44.284+1000	using filename 'tags' as collection
2021-01-03T20:55:44.297+1000	connected to: mongodb://localhost/
2021-01-03T20:55:44.330+1000	1 document(s) imported successfully. 0 document(s) failed to import.

Como no especifiqué un nombre de colección, creó una colección llamada tags (según el nombre del archivo), luego importé mi documento.

Vayamos al caparazón de mongo y revisemos la colección.

db.tags.find()

Resultado:

{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }

Podemos ver que los datos CSV se han importado como una matriz JSON.

Aquí está de nuevo, pero con un formato más agradable, lo que podría hacer que la matriz sea más fácil de ver.

db.tags.find().pretty()

Resultado:

{
	"_id" : ObjectId("5ff1a2b0300ed79d9836882f"),
	"tags" : [
		"html",
		"css",
		"sql",
		"xml"
	]
}

Combinado con otros datos CSV

El archivo CSV del ejemplo anterior solo constaba de datos de matriz. Pero también podemos incluir otros datos en el archivo.

Aquí hay un ejemplo de un archivo CSV llamado articles.csv que contiene otros datos.

_id,title,body,tags.0,tags.1,tags.2,tags.3
1.0,Web,blah,html,css,sql,xml
2.0,Animals,blah 2,cats,dogs
3.0,Plants,blah 3,trees
4.0,Oceans,blah 4

Importemos ese archivo:

mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv

Salida:

2021-01-03T21:14:38.286+1000	no collection specified
2021-01-03T21:14:38.287+1000	using filename 'articles' as collection
2021-01-03T21:14:38.336+1000	connected to: mongodb://localhost/
2021-01-03T21:14:38.407+1000	4 document(s) imported successfully. 0 document(s) failed to import.

Ahora saltemos al caparazón de mongo y revisemos la colección.

db.articles.find()

Resultado:

{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] }
{ "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] }
{ "_id" : 4, "title" : "Oceans", "body" : "blah 4" }
{ "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }

Vamos a embellecerlo un poco.

db.articles.find().pretty()

Resultado:

{
	"_id" : 1,
	"title" : "Web",
	"body" : "blah",
	"tags" : [
		"html",
		"css",
		"sql",
		"xml"
	]
}
{
	"_id" : 3,
	"title" : "Plants",
	"body" : "blah 3",
	"tags" : [
		"trees"
	]
}
{ "_id" : 4, "title" : "Oceans", "body" : "blah 4" }
{
	"_id" : 2,
	"title" : "Animals",
	"body" : "blah 2",
	"tags" : [
		"cats",
		"dogs"
	]
}

Entonces podemos ver que los documentos se crearon como documentos JSON/BSON perfectos y se crearon matrices para los datos relevantes.

Observe que no se ha creado ninguna matriz para el documento 4. Esto se debe a que no se proporcionaron datos de matriz en el archivo CSV. Entonces, en lugar de crear un campo con una matriz vacía, no creó el campo ni la matriz.