Importar contenidos y usuarios desde CSV en Drupal 8/9

    Muchas veces, al trabajar con proyectos web, nos encontrarmos con varias actividades relacionadas al traspaso de datos y/o migraciones, entre plataformas diferentes o versiones distintas de la misma. Según el caso, para realizar dicho procedimiento, contamos con varios métodos como el consumo de información a través de los servicios web o la importación desde archivos con diferentes formatos, que podrían ser xml, uml, json, csv, entre otros.

     Debido a que Drupal, al igual que otros CMS O gestores de contenido, utiliza bases de datos y tablas, como parte de su estructura, para guardar o gestionar todo aquello a lo que tenemos acceso, tanto si somos administradores, gestores o incluso usuarios finales, una vez instalado; es posible importar sus contenidos y usuarios desde un archivo en formato csv, ya que nos permitirá importar varias tablas y contenidos de una manera simple y visualmente gestionables, si nos apoyamos en programas para hojas de cálculo como Libre Office o Microsoft Excel.

 Descarga y Activación:

Para descargar y activar cualquier módulo de Drupal tienes varias opciones:

     Descarga:

          1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:

composer require drupal/csv_importer

          2.- Descargándolo manualmente el módulo desde la página oficial del Módulo CSV Importer y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.

     Activación:

          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente

drush en csv_importer -y

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

    Página de configuración de CSV Importer

        Una vez activado el módulo, podremos dirigirnos a su página de configuración, en la url "/admin/config/development/csv-importer", donde veremos un selector, que nos mostrará las diferentes opciones de importación y cambiará de acuerdo con lo que hayamos elegido. 

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Cómo importar contenidos con CSV Importer

          Para importar contenidos, tendremos que seleccionar la opción tipo de contenido y a continuación, veremos el listado de los tipos de contenidos que hayamos configurado en nuestro drupal.

          Select entity type: Permite seleccionar el tipo de entidad con el que vamos a trabajar en la importación. Por defecto, en una instalación nueva de Drupal, tendremos las siguientes entidades disponibles: Usustio, Enlace de menú personalizado, Contenido, Comentario y Término de taxonomía.

          Select entity bundle: Permite seleccionar el tipo de contenido que deseamos importar, dependiendo de los tipos que tengamos en el drupal instalados, este listado podría variar. Por defecto, en una instalación nueva de Drupal, tendremos Artículo y Página básica.

          ¿Qué es un Bundle?; según la página oficial de Drupal "En Drupal 8, los paquetes son un tipo de contenedor de información que contiene el campo o las definiciones de configuración. A veces se les llama "subtipos". Los paquetes son opcionales y en la jerarquía de tipos de contenedores de información se ajustan debajo de los tipos de entidad."

         Select delimiter: Permite seleccionar el separador que utilizaremos en el archivo de importación. Lo más frecuente es utilizar comas ( , ) o punto y como ( ; ), para separar los contendios dentro del archivo para importar.

         Select CSV file: Permite cargar el archivo con el que finalmente, importaremos los contenidos, usuarios, términos, etc.

     Cómo preparar el archivo de importación usando Open Office

          Ya mencioné al principio, que podremos crear archivos de importación en formato CSV utilizando programas gratuitos como Open Office o Microsoft Excel. El objetivo principal es que podamos controlar visualmente los contenidos que vayamos a utilizar, ya que el formato original del csv es un conjunto de datos y comas. Algo parecido al siguiente ejemplo:

title,body,body,body
CSV importer 1,body 1,body 2,body 3
CSV importer 2,body 4,body 5,body 6

     Para que podamos configurar un archivo de importación, lo importante es tener claro que la primera línea del archivo es la que define las cabeceras de las columnas y en las siguientes, los contenidos que se colocarán dentro de cada columna respectivamente. 

     Paso 1- Crear archivo 

        Abrir el programa Open Office y crear una hoja de cálculo nueva.

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Paso 2 - Eliminar hojas sobrantes antes de impotar

        Es muy importante que antes de comenzar a rellenar el archivo con nuestros datos, eleminemos las hojas adicionales que generan por defecto al crear una hoja de cálculo, o de lo contrario, no se realizará la importación.

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Paso 3 - Guardar el archivo en formato CSV

        Una vez hayamos rellenado el documento con todos los datos que vamos a importar, asegurándonos de que cada columna corresponda con el contenido o usuario esperado, procederemos a guardar nuestro archivo en el formato csv. 

       Para ello, iremos al menú Archivo/Guardar como

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     A continuación, seleccionaremos el formato CSV y el programa nos preguntará, si deseamos mantener el mismo formato para continuar editando, seleccionaremos que sí, y de esta forma, aunque exportemos el archivo, también podremos realizar más cambios o correcciones usando el programa Open Office más adelante.

     Muy importante para los contenidos en español Formato Unicode UTF-8, en el caso de los contenidos en español, en la siguiente ventana que se abrirá deberíamos asegurarnos del formato correcto, para evitar errores con los signos de puntuación específicos de nuestro idioma como el uso de Ñ, acentos, etc.

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Paso 4 - Importando los contenidos desde el CSV creado

        Cuando hayamos terminado de configurar y guardar nuestro archivo csv, volveremos a la página de configuración del módulo CSV Importer, en la url "/admin/config/development/csv-importer" y procedermos a cargar nuestro archivo para comenzar con la importación.

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Problemas con la importación

          Es posible, que al hacer clic en el botón de importar, veas en la pantalla un error muy frecuente relacionado conel campo título, esto ocurre porque, si haz utilizado un programa de hojas de cáculo como Open Office o Microsoft Excel, al guardar el archivo, se ha añadido un espacio entre los campos título y el siguiente campo, que por defecto es el body. El campo título es el identificador por defecto en Drupal, por lo tanto, no debería existir ningún espacio relacionado con él.

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Para solucionarlo, abre el archivo csv utilizando el block de notas de windows o cualquier otro programa que te permita ver el contenido original, una vez abierto, borra el espacio que existe y una vez guardado el cambio, intenta realizar la importación nuevamente.

Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ejemplos de importación con CSV Importer

          Si quieres conocer más sobre las estructuras de los archivos para importar, puedes visitar su Página de Ejemplos de Importación con CSV Importer