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

Importe un archivo CSV a MongoDB con mongoimport

Cuando use MongoDB, puede usar mongoimport para importar documentos a una colección. mongoimport es una utilidad de línea de comandos que importa contenido de un archivo Extended JSON, CSV o TSV. El archivo de importación podría haber sido creado por mongoexport o alguna otra utilidad de exportación.

Este artículo presenta ejemplos de cómo importar un archivo CSV a MongoDB.

Ejemplo

Supongamos que tenemos el siguiente archivo CSV llamado pets.csv :

_id,name,type
1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

El siguiente comando importa el archivo CSV a MongoDB:

mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv

En este caso, no especifiqué una colección para importarlo, por lo que creó una colección con el mismo nombre del archivo (pets ).

Comprueba los resultados

Echemos un vistazo a la colección.

db.pets.find()

Resultado:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Podemos ver que los documentos se importaron como se esperaba.

Archivos CSV sin encabezados de columna

En el ejemplo anterior, usamos el --headerline parámetro para especificar que la primera línea debe usarse para los nombres de campo.

Si su archivo CSV no contiene una línea de encabezado, deberá usar los --fields parámetro o el --fieldFile parámetro para especificar los nombres de los campos.

Por lo tanto, imagine que nuestro archivo CSV no tenía la línea de columna y se veía así:

1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

Entonces podríamos usar el siguiente comando para importar el archivo:

mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv

Eso tiene el mismo resultado que el ejemplo anterior.

Especifique el nombre de la colección

Puedes usar la --collection (o -c ) para especificar una colección en la que importar el archivo.

Aquí hay un ejemplo del uso de la --collection parámetro para importar el mismo archivo a una colección diferente:

mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv

Si la colección aún no existe, se creará. Si ya existe, el resultado de la importación dependerá del modo que esté usando (más sobre esto más adelante).

En nuestro caso, así es como se ve la colección recién creada:

db.pets2.find()

Resultado:

{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : 1, "name" : "Wag", "type" : "Dog" }

Eliminar la colección antes de importar

Puedes usar el --drop parámetro para eliminar cualquier colección existente con el mismo nombre que la que está intentando crear/importar.

Imagina que tenemos un segundo archivo, llamado pets2.csv , con el siguiente documento:

_id,name,type,weight
4,"Bubbles","Fish",3

Esto es lo que sucede si importo ese documento a pets2 colección usando --drop opción:

mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv

Salida:

2021-01-03T15:05:40.281+1000	connected to: mongodb://localhost/
2021-01-03T15:05:40.284+1000	dropping: PetHotel.pets2
2021-01-03T15:05:40.336+1000	1 document(s) imported successfully. 0 document(s) failed to import.

Esto nos dice que la colección se eliminó y se importó un documento.

Echemos un vistazo a la colección:

db.pets2.find()

Resultado:

{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }

Como era de esperar, nuestro nuevo documento es el único de la colección.

Modos de importación

Hay varios modos de importación que puede usar con mongoimport . Estos modos determinan qué sucede si ya hay documentos coincidentes en la colección a la que intenta importar.

Los modos son los siguientes:

Modo Descripción
insert Este es el modo predeterminado. Este modo inserta los documentos del archivo de importación. Si ya existe un documento coincidente en la colección, se produce un error. Un documento coincidente es aquel que tiene la misma ID única (como un _id coincidente campo) como un documento en el archivo de importación.
upsert Reemplaza documentos existentes en la base de datos con documentos coincidentes del archivo de importación. Se insertan todos los demás documentos.
merge Combina documentos existentes que coinciden con un documento en el archivo de importación con el nuevo documento. Se insertan todos los demás documentos.
delete Elimina los documentos existentes en la base de datos que coinciden con un documento en el archivo de importación. Cualquier documento que no coincida no tiene efecto.

Ver los modos de importación de mongoimport para ver ejemplos de cada modo.

Busca mongoimport

mongoimport es parte del paquete de herramientas de base de datos de MongoDB. Las herramientas de base de datos de MongoDB son un conjunto de utilidades de línea de comandos para trabajar con MongoDB.

Si no está seguro de tener MongoDB Database Tools/mongoimport instalado, intente ejecutar el siguiente comando en su Terminal o Símbolo del sistema para verificar:

mongoimport --version

Si lo tiene, debería ver la información de la versión, etc. Si no lo tiene, puede usar las instrucciones de instalación en el sitio web de MongoDB para instalarlo en su sistema.

Dónde ejecutar mongoimport ¿Comandos?

Necesitas ejecutar mongoimport comandos desde la línea de comandos de su sistema (por ejemplo, una nueva ventana de terminal o símbolo del sistema).

No los ejecutes desde mongo cáscara.