Importar ficheros CSV a nuestra base de datos en MongoDB

Como importar datos en formato csv a nuestro servidor en MongoDB

CSV es un formato de archivo muy extendido para el intercambio de información. El formato de este es muy simple. La primera fila suele importar fichero csv a mongodbser el nombre de los campos, separados por comas. Las demás filas son los datos en si.

Para importar este tipo de archivos csv ha nuestro servidor de bases de base de datos usaremos el mismo comando que nos proporciona la empresa detrás de MongoDB para importar datos desde un fichero en formato json.

Comando mongoimport

Como ya explique en el otro post donde importamos los datos en formato josn a nuestro servidor MongoDB el comando que utilizaremos es el que MongoDB nos pone a disposición de estas tareas. Este comando es mongoimport. Este comando tiene el siguiente formato básico.

1
mongoimport --db baseDatos --collection coleccion --file fichero_a_importar --type csv

Si nuestro servidor esta instalado en local, escuchando en el puerto por defecto, es decir, el 27017. Y ademas no tiene credenciales de acceso, sera suficiente.

Explicacion del comando mongoimport

Con el parámetro “–db”,  o “-d”, establecemos el nombre donde vamos a importar los datos. No tiene por que existir. Por norma en mongodb, si la base de datos no existe automáticamente el servidor de base de datos no lo crea por nosotros.

El parámetro “–collection”, o “-c”,  estableceremos el nombre de la colección que va ha albergar los documentos que vamos ha importar. Como en el caso de la base de datos, si esta no existiera, el servidor de mongodb la crearlo por nosotros.

El parámetro siguiente, “–file”, establecemos el nombre del fichero en formato csv que vamos a importar.

El parámetro “–type csv” establecemos que el tipo de archivo que vamos ha importar esta en formato csv. En el anterior post, no utilizamos este parámetro, ya que el comando de mongoimport, si no lo indicamos, asume que vamos a utilizar el formato json.

Y en escenario básico, dando se las condiciones anteriores, esto sería suficiente.

Otro parámetros de mongoimport

Pero lo habitual no es tener este escenario idílico, tendremos que utilizar otro parámetros para establecer, tanto el host donde se encuentra el servidor, el puerto en el cual está a la escucha. Y el nombre de usuario y contraseña que necesitaremos para autentificarnos.

Lo parámetros necesarios para estas operaciones son los siguiente.

Para establecer el host del servidor utilizaremos el parámetro “–host” o en su versión abreviada “-h” seguido de la dirección del servidor.

Para el puerto el parámetro que necesitamos es “–port” seguido del puerto que utiliza el servidor de mongodb.

También podemos establecer el host y el puerto con el mismo parámetro host. Para ello lo podemos hacer de la siguiente formato.

1
mongoimport --host direccion_o_IP:puerto

o en formato abreviado

1
mongoimport -h direccion_o_IP:puerto

Para lo que se refiere al registro en el servidor, usaremos el parámetro “–username” o “-u” seguido del nombre de usuario que vamos a utilizar. Para establecer la contraseña usaremos el siguiente parámetro “–password” o en versión abreviada “-p”.

Ejemplo de uso de mongoimport

Un ejemplo de uso quedaría de esta forma.

1
mongoimport --db baseDatos --collection coleccion --type csv --host direccion_o_ip --port 23456 --username usuario --password contraseña --file ficheroImportar.csv

Y si todo lo hemos escrito correctamente, y no se ha producido ningún error, ya tendríamos nuestros datos importados a nuestro servidor de base de datos con MongoDB.

Si te has quedado con alguna duda, me puedes dejar un comentario.

Configurar interface de red en versiones de Ubuntu 17.10 o superiores

Configuración de la interface de red en Ubuntu 17.10

Desde la versión 17.10, Ubuntu ha activado por defecto en sistema “Netplan” para la configuración de los interfaces de red. Aunque en la versión 17.10 se ha activado como la opción de configuración de red por defecto. El sistema ya viene implementatado desde la versión 16.04.

Este sistema es totalmente distinto a lo que hasta ahora veniamos Configuración de redutilizando para la configuración de las tarjetas de red.

El primer cambio que nos encontramos, es la ubicación de los ficheros de configuración. Pasando de estar en /etc/network/interfaces a estar en /etc/netplan/01-netcfg.yaml.

Configuración de la interface

El formato de esta nueva versión es completamente diferente a la que normalmente veniamos usando en las versiones anteriores.

Una estructura basica del fichero 01-netcfg.yaml, seria la siguiente:

1
2
3
4
5
6
7
8
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: yes

Una de las cosas que hay que tener muy en cuenta es respetar las tabulaciones, si la establecemos mal, sera una de las causas que nos pueden probocar un error en la configuración.

El ejemplo muestra como seria una configuración por defecto para una interface que obtega la dirección ip desde una servidor de DHCP.

La configuración se divide en dos zonas, la primera con indicaciones para la herramienta Netplan. Y la segunda, con la configuración de las interfaces de red.

Debajo del paramentro “ethernets” pondremos la configuración de todas nuestas interfaces de red que tengamos instaladas en nuestro sistema.

Para realizar esta configuración los primeros que debemos de indicar sera, el nombre logico asignado a la tarjeta. En el caso del ejemplo “enp0s3”.

Debajo de el y con un nuevo nivel de tabulación pondremos la configuracion. En el caso del ejemplo, como esta configurada, para que obtega la dirección IP desde el servidor de DHCP. Solo tendremos que poner:

1
dhcp4: yes

Y ya tendriamos la configuración establecida.

Otras configuraciones

En el caso que queramos personalizar la dirección ip de la interface, utilizariamos los siguientes comandos:

  • addresses: Dirección que queremos establecer para la interface. Para establecer la mascara de red, se lo indicaremos mediante su longitud en la dirección ip. Ejemplo: 192.168.0.10/24. Pueder ver en esta entrada de la Wikipedia los valores utlizados.
  • gateway4: Dirección ip del gateway para la versión 4 del protocolo IP. Para establecer el gateway para la versión 6, solo tendriamos que cambiar en 4 por el 6, y establecer una dirección de tipo v6.
  • nameservers: bloque para establecer los servidores de dns que va ha usar la tarjeta de red. Para indicar la dirección utilizaremos el parametros addresses, al igual que la dirección IP, la acotaresmos entre corchetes, las direcciones IP de los servidores de DNS, las separaremos por comas.

Estos serian los paramentros basicos para establecer la dirección estatica para la tarjeta de red.

Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
network:
version: 2
renderer: networkd
ethernets:
enp0s8:
dhcp4: yes
enp0s3:
dhcp4: no
addresses: [192.168.100.10/24]
gateway4: 192.168.100.1
nameservers:
addresses: [9.9.9.9, 8.8.8.8]

Si queremos establecer la configuración para más de una interface la podríamos a continuación con el mismo formato.

Con esto ya tenemos nuestra tarjeta configurada.

Como de costumbre, cualquier duda comentario.