1. Libros y videos
  2. MongoDB
  3. Importar, exportar y restaurar datos
Extrait - MongoDB Comprensión y optimización de la gestión de datos (con ejercicios y soluciones)
Extractos del libro
MongoDB Comprensión y optimización de la gestión de datos (con ejercicios y soluciones) Volver a la página de compra del libro

Importar, exportar y restaurar datos

Importar

1. La utilidad mongoimport

El programa mongoimport es muy útil para importar datos contenidos en archivos en formato JSON, CSV o TSV (en los primeros, los campos se separan por comas mientras que en los segundos se separan por tabuladores). Al igual que mongofiles, no se utiliza desde mongosh, sino desde una terminal. Realizaremos los comandos que vienen con el usuario mongosensei, creado varios capítulos atrás. Para que un usuario pueda realizar operaciones de importación, debe tener al menos el rol readWrite en la base de datos a la que se dirige, que es el caso de mongosensei.

Esta utilidad solo admite documentos con codificación UTF-8; cualquier intento de importar datos desde un archivo con otra codificación fallará. A continuación, se muestra un ejemplo del error generado por un intento de importación desde un archivo codificado en UTF-16:

connected to: mongodb://localhost/  
Failed: error processing document #1: invalid character 'ÿ'  
looking for beginning of value  
imported 0 documents 

2. Importar datos desde un archivo JSON

JSON es el formato utilizado de forma predefinida por mongoimport. Para realizar nuestra primera importación, escribimos un archivo espectáculos.json que contiene tres documentos, cada uno de los cuales ocupa una línea:

{ "_id": 1, "título": "Platonov", "autor": "Tchekov", "lugar": "Teatro Golovine", 
"fecha": ISODate("2024-07-25T22:00:00Z"), "precio": 20} 
{ "_id": 2, "título": "Hamlet", "autor": "Shakespeare", "lugar": 
"Teatro del Fórum", "fecha": ISODate("2024-07-24T20:00:00Z"), "precio": 17} 
{ "_id": 3, "título": "El Avaro ", "autor": "Molière", "lugar": 
"Teatro de los Domos", 
"fecha": ISODate("2024-07-23T20:00:00Z"), "precio": 15} 

Utilizaremos el comando importar con los parámetros de autenticación utilizados anteriormente y las siguientes opciones:

  • db: la base de datos de destino, en este caso test.

  • colección: el nombre de la colección a la que se importarán...

Exportar

1. La utilidad mongodump

El ejecutable mongodump se puede utilizar para exportar bases de datos en formato binario. Escribamos el comando que exportará el contenido de la base de datos test, que se ha utilizado para la mayoría de nuestros ejemplos, al directorio /tmp (cuidado, si ya hay archivos de exportación allí, ¡se sobrescribirán!):

mongodump -u "mongosensei" --authenticationDatabase "admin" \  
--db test -o=/tmp 

Esta es una parte de la pantalla que se obtiene:

writing test.personas to /tmp/test/ personas.bson  
writing test.personas to /tmp/test/personas.bson  
writing test.libros to /tmp/test/libros.bson  
done dumping test.personas (9 documents)  
done dumping test.personas (9 documents)  
done dumping test.libros (8 documents) 

Si nos tomamos la molestia de mirar qué hay en el directorio /tmp, vemos que mongodump ha creado un subdirectorio con el nombre de la base de datos objetivo. Para cada colección, encontramos dos archivos: uno con la extensión .json y el otro .bson. Si observamos el contenido del archivo que contiene los metadatos en formato JSON, podemos ver los índices que se han establecido:

cat personas.metadata.json  
{"options":{},"indexes":[{"v":2,"key":  
"_id":1},"name":"_id_","ns":"test.personas"},{"v":2,"key":  
{"nombre":1.0},"name":"nombre_1","ns":"test.personas", 
"background":true}, 
{"v":2, "key": 
{"nombre":1.0,"edad":1.0},"name":"idx_nombre_edad","ns":"test.personas"}], 
"uuid": "e00491...

Restaurar

El programa mongorestore carga datos contenidos en archivos binarios exportados mediante mongodump o desde la entrada estándar.

Cuando utilizamos mongodump, la operación creó un directorio con el nombre de la base de datos en el directorio temporal /tmp. Supongamos que mientras tanto hemos borrado la base de datos de prueba que se ha utilizado para apoyar nuestros ejemplos desde el principio de este libro... ¡Que no cunda el pánico! Gracias a mongorestore, podremos recuperar los datos tal y como estaban. Este ejecutable se invoca de la siguiente manera:

mongorestore < opciones > < directorio de archivos BSON o  
archivo BSON único > 

Para utilizarlo de forma muy sencilla, vamos a indicarle el directorio en el que mongodump generó los archivos BSON y, por supuesto, el nombre de la base de datos en la que se deben restaurar los datos (opción -d):

mongorestore -u "mongosensei" --authenticationDatabase  
"admin" /tmp/test -d test 

Esto es lo que aparece en la pantalla cuando se ejecuta este proceso...

building a list of collections to restore from /tmp/test dir  
reading metadata for test.meteo from /tmp/test/meteo.metadata.json  
reading metadata for test.personas from /tmp/test/  
personas.metadata.json  
restoring test.meteo from /tmp/test/meteo.bson  
restoring test.personas from /tmp/test/personas.bson  
reading...