Migración de contenidos - Administrando migraciones (Migrate tools)

10/12/2020
Migración de contenidos - Administrando migraciones (Migrate tools)

En los anteriores post hemos hablado de cómo realizar un análisis, plan de migración, cómo llevar a código las distintas migraciones y como crear plugins para proporcionar más funcionalidades a nuestras migraciones. En este post veremos como administrar migraciones mediante el módulo Migrate tools.

Migrate tools

Como ya se comentó en la serie 2, es un módulo contribuido (https://www.drupal.org/project/migrate_tools) que nos proporciona herramientas para ejecutar y administrar migraciones. Nos provee de una serie de comandos drush para interactuar con las migraciones, entre ellos los que se listan a continuación:

  • migrate:status: Ver el estado de las migraciones.
  • migrate:import: Importar migraciones.
    --limit: Número de elementos que queremos migrar.
    --idlist: Lista de identificadores de origen separados por coma para migrar.
    --group: Grupo de migración para poder lanzar migraciones grupales.
    --update: Fuerza a actualizar todos los registros previamente migrados e inserta los nuevos.
  • migrate:rollback: Revierte una migración.
  • migrate:stop: Para una migración.
  • migrate:reset-status: Resetea el estado de la migración si esta se queda en un estado anómalo.
  • migrate:messages: Muestra los mensajes de errores de una migración concreta.
  • migrate:fields-source: Nos muestra información acerca del contenido de origen

Por otro lado, proporciona una interfaz para el lanzamiento de migraciones, esta se encuentra una vez instalado el módulo accediendo a la url “/admin/structure/migrate”. Una de las limitaciones a este nivel es que no se puede hacer rollback. Por eso en este capítulo nos centraremos en comando drush.

Ejecutando migraciones

Una vez instalado el módulo migrate tools y nuestro módulo de migración, accederemos al sistema web mediante consola y ejecutaremos drush migrate:status o drush ms, con este comando podremos ver el estado de nuestra migración o migraciones y la información extra tal como el grupo de migración, el identificador de cada una de las migraciones, el estado en el que se encuentra, el número total de filas de origen, el número total de las importaciones, el número total de los filas que aún no se han procesado y la fecha de la última vez que se lanzó la migración.

Migración de contenidos - Ejemplo de la ejecución de drush ms para una migración
Ejemplo de la ejecución de drush ms para una migración

Para lanzar las migraciones podemos hacerlas mediante el comando drush migrate-import o drush mim y a continuación el identificador de la migración o el grupo. Si se hace mediante el identificador debemos de tener en cuenta que no nos migrará las dependencias y si esas dependencias son requeridas, el comando arrojará como salida un error. En el caso de añadir en el comando el grupo con el parámetro --group lanzará las migraciones de forma consecutivas, es decir, de arriba a abajo proporcionandonos información acerca de cada una ellas.

Migración de contenidos - Ejemplo de la ejecución de drush mim con el grupo de migración
Ejemplo de la ejecución de drush mim con el grupo de migración.

Una vez ejecutada la migración, si volvemos a ejecutar el comando drush ms, veremos que todos los items están importados. También podemos utilizar el comando migrate:messages para ver si hemos obtenido algún error.

La utilización de rollback revierte la migración con lo que podemos realizar tantas veces la migración como deseemos. Para ello debemos de utilizar el comando drush migrate-rollback al cual podemos pasarle el identificador de la migración o el group.

Migración de contenidos - Ejemplo de la ejecución de drush migrate-rollback con el grupo de migración
Ejemplo de la ejecución de drush migrate-rollback con el grupo de migración.

Para trabajar con migraciones debemos de tener en cuenta que cualquier cambio que se realice a nivel de ficheros (yml) de configuración no tendrán actualización en el sistema drupal hasta que no se cambien a nivel de base de datos y esto ocurrirá con la desinstalación y la instalación del módulo de nuestra migración o bien haciendo una importación parcial de la configuración. Para esta última es necesario realizar drush config-import --partial --source=modules/custom/mymodule/config/install

Conclusiones

A lo largo de esta serie de post hemos visto que cualquier migración de contenido conlleva un análisis y un plan de migración, realizar el código de estas y administrarlas.