Ir al contenido principal

Importar CSV en MongoDB

Poco de Historia

 Hace unos días me vi en la necesidad de importar un archivo CSV a una base de datos, dado que necesitaba la información para hacer consultas.

La razón era poder consultar el código postal de un domicilio y recuperar la colonia, municipio/alcaldía y estado. La base de datos en cuestión es MongoDB, y como vengo utilizando por mucho tiempo bases de datos relacionales, donde hacer este tipo de importaciones me era común, pense que esta tipo de base deberia tener algo similar.

Primer Intento

En un principio llegue a hacer una pequeña aplicación (en Node.JS) para hacer la importación, pero por las premuras tuve que buscar otro método mas rápido. Para lo cual encontré un método "nativo" que trae este gestor de datos.

Solución

Hacer la importación es sencilla. Si estas acostumbrado a usar la terminal, te sera muy sencillo. Para esto hay que ejecutar el siguiente comando:

$ mongoimport -d mibase -c micoleccion --type CSV --file archivo.csv --headerline


El comando anterior utiliza varios parámetros que a continuación describo:

  • Parámetro -d: Nombre de la base de datos
  • Parámetro -c: Se indica la colección (tabla si lo quieres relacionar) donde se guardaran los registros
  • Parámetro --type: Define el tipo/formato de dato origen del archivo a procesar
  • Parámetro --file: Indica el archivo (con su ruta) a procesar
  • Parámetro --headerline: Se le indica al importador que la primera linea se utilizara para los nombres de los campos del documento. Este parametro solo funciona con formatos CSV y TSV
Nota: es necesario aclarar que para que el comando se pueda ejecutar debe estar en el PATH de tu sistema operativo.

Con lo anterior se cumple con el objetivo de hacer la importación y de forma mas rápida. Esperando te ahorre tiempo como a mí, nos leemos luego.

Comentarios

Entradas más populares de este blog

Como montar particiones LVM en Linux

Como están lectores, reportandome después de varios meses fuera. Hace un par de días vi un howto que me gusto y quiero compartir. Nota: lo siguiente es una traducción, el original lo pueden ver el siguiente link: How to mount an LVM partition on Linux Introducción LVM es una herramienta de administración de volúmenes lógicos (particiones) la cual te permite administrar el espacio de disco usando la connotación de volúmenes lógicos y grupo de volúmenes. El mayor beneficio de usar LVM sobre las particiones clásicas es la flexibilidad en la asignación de almacenamiento para usuarios y aplicaciones sin verse limitado por el tamaño de los discos individuales. En LVM, el almacenamiento físico, en el cual se crean los volúmenes lógicos, son particiones tradicionales (/dev/sda1, /dev/sda2). Estas particiones deben ser marcadas como "volúmenes físicos" y etiquetadas como "Linux LVM", esto para ser usadas en LVM. Como no montar Unas vez que las particiones h

Configurando interfaces de red virtuales en Linux

Estimados, de nuevo en acción retomando mi rumbo. Les traigo un traducción de un howto que me llamo la atención y creo que es bueno tener información en castellano. Así que aquí esta: La entrada original la pueden tener aqui (si te gusta leer en ingles), comencemos. Introducción ¿Sabia que puedes asignar mas de una dirección IP a una única interfaz de red? Esta técnica es muy utilizada, por ejemplo cuando se trabaja con Apache y host virtuales, esto para permitir accesar al mismo servicio pero usando dos direcciones IP. Interfaz de red virtual temporal  El proceso de crear interfaces de red virtual en +GNU/Linux  es muy simple. Esto involucra una ejecución simple del comando ifconfig ifconfig eth0:0 123.123.22.22 El comando anterior creara una nueva interfaz de red virtual basada en la interfaz física de eth0 . Lo condición mas importante para crear una interfaz de red virtual es la interfaz física de red, como en nuestro ejemplo, eth0 debe existir. El ejemplo comple

Como leer/visualizar archivos utmp, wtmp y btmp en Linux

Lectores, les paso este "Como" de linux, algo que debe ser usado por cualquier sysadmin de Linux. Esperando aportar conocimiento, aqui les dejo. Introducción. En sistemas operativos Linux/Unix todo es registrado en algun lado (los conocidos logs). La mayoria de registros del sistema se almacenan en el directorio /var/log . El directorio contiene registros relacionados a distintos servicios y/o aplicaciones. En este directorio tenemos algunos archivos como utmp , wtmp y btmp . Estos archivos contienen todo el detalle de registro de inicio (login) y termino (logout) de sesiones de usuarios ya sea local, sistemas remoto, como estado en el sistema, tiempo en linea, etc. Informacion sobre los archivos utmp : te mostrara informacion completa del acceso de usuarios, la terminal que usa, termino de sesion, eventos del sistema y el estado actual del mismo, etc. wtmp : contiene el historio del archivo utmp btmp : registros solo intentos fallidos de sesion. Como no