En algunas ocasiones, necesitamos migrar datos desde una fuente conocida a nuestro sitio en Drupal 7. Este proceso puede ser laborioso y llevar varias horas, especialmente si no se tiene experiencia con migraciones o con las distintas fuentes de datos posibles. Afortunadamente, el módulo Migrate de Drupal facilita enormemente esta tarea, proporcionando una interfaz sencilla y poderosa para gestionar la migración de datos.
En este artículo, veremos un ejemplo práctico de cómo migrar una tabla desde una base de datos a nuestro sitio Drupal para crear nodos de un tipo de contenido específico. Para este ejemplo, crearemos un tipo de contenido llamado Activities, que incluye un título, un cuerpo y una imagen.
Antes de comenzar, debemos tener claro qué datos necesitamos migrar. En este caso, migraremos los datos de la tabla activities
de una base de datos externa.
Primero, habilitamos el módulo Migrate y el módulo Migrate UI (que nos proporciona una interfaz para gestionar las migraciones):
A continuación, vamos a crear un módulo personalizado llamado migrate_activities
. Este módulo dependerá del módulo Migrate y tendrá la siguiente estructura de archivos:
En el archivo migrate_activities.info
, agregamos la dependencia al módulo Migrate:
El archivo migrate_activities.migrate.inc
se encargará de registrar la migración. Utilizamos el hook hook_migrate_api()
para registrar los grupos de migración y las migraciones individuales. El código para el hook se ve de la siguiente manera:
La clase MigrateActivities
extiende la clase base Migration
de Drupal y se define en el archivo activities.inc
. Es importante incluir este archivo en el archivo migrate_activities.info
como un archivo requerido:
La clase MigrateActivities
se ve así:
En el proceso de migración, necesitamos conectar a una base de datos externa y obtener los datos para la migración. Drupal ofrece varias fuentes para conectar con diferentes tipos de datos. En este caso, utilizamos MigrateSourceSQL para conectarnos a una base de datos SQL.
Primero, configuramos la conexión a la base de datos en el archivo settings.php
de Drupal:
Ahora, podemos seguir editando la clase MigrateActivities
y establecer la conexión y consulta SQL:
A continuación, mapeamos los campos de la fuente (base de datos) con los campos del destino (nodos en Drupal). Esto lo logramos utilizando la función addFieldMapping
:
Una vez que tengamos todo listo, habilitamos nuestro módulo y nos dirigimos a la interfaz de migración en:
Hacemos clic en el botón Register statically defined classes para registrar nuestra migración. Ahora, en el panel de administración de migraciones (admin/content/migrate
), veremos las migraciones disponibles.
En la tabla de migraciones, elegimos la opción de Import para iniciar el proceso de migración. Después de que el proceso termine, los datos de la tabla activities
se habrán migrado a nodos de tipo Activities.
Para verificar que la migración se haya realizado correctamente, podemos crear una vista que muestre los resultados de los nodos migrados.
El módulo Migrate de Drupal es una herramienta poderosa que nos permite migrar datos desde diversas fuentes, como bases de datos SQL, CSV, XML, JSON, entre otros. Con la ayuda de este módulo, podemos crear nodos, usuarios, taxonomías y otras entidades en nuestro sitio Drupal, ahorrando horas de trabajo y facilitando el proceso de migración de contenidos.
Referencias: