1. Migración de datos en
Drupal 8
Javier Gómez
Drupal Backend Developer
www.codigoweb.es
@fjgomez2
2. Migración de datos ¿para qué?
• Actualizar drupal desde una versión anterior 7, 6, ….
• Importar datos desde otros cms
• wordpress
• joomla
• etc
• Importar datos desde otras fuentes de datos
• MySQL
• CSV
• JSON
• XML
3. De Drupal 7 a Drupal 8
• No todo son datos, hay que migrar funcionalidad
• Módulos contrib, la mayoría ya están migrados, pero no todos
• https://www.bluespark.com/status-top-100-contributed-modules-drupal-8
• http://d8upgrade.org (te mandan un informe basado en los módulos de tu drupal 7)
• Módulos custom, hay que volverlos a programar
• Temas
• Rules
• Pero ¿Cómo lo hacemos? (marzo 2017)
• Drupal 7: Analizar funcionalidades y estructura de contenido
• Instalación limpia de Drupal 8 añadiendo funcionalidades y estructura
• Importar datos desde Drupal 7
4. migrate_drupal
• Sub-módulo de migrate en core para la importación de Drupal 6 y 7
• Está en fase experimental
• http://my-drupal-8/upgrade
• Realiza importación no sólo de contenido, se intenta importar parte de la
configuración
• Es poco fiable y no se recomienda su utilización (marzo 2017)
• https://www.drupal.org/project/migrate_upgrade
• Permite importar directamente desde D6 y D7 sin tener que programar
• Es experimental y no es 100% fiable (marzo 2017)
migrate_upgrade
5. Feeds y Migrate
• Drupal 7 (2 tendencias)
• Feeds: configurable desde interface
• Migrate: había que programar pero era más potente
• Para la mayoría de los casos servían los 2
• Eran módulos contrib
• Drupal 8
• Migrate está en el core
• Feeds existe como módulo contribuido en versión dev
• Otras opciones: Módulo custom
6. Migrate
• Se programa la importación en código (módulo custom)
• Se maneja desde línea de comandos con drush
• Permite volver atrás (Rollback)
• Permite hacer depuración (debug)
• Módulos contrib complementarios
• https://www.drupal.org/project/migrate_tools
• Necesario para utilizar drush
• https://www.drupal.org/project/migrate_plus
7. Programar una migración
• Es más complejo que en Drupal 7
• Requiere tener conocimiento sobre:
• Programación de módulos en Drupal 8 / Symfony
• Funcionamiento de Migrate
• OOP en PHP
• No partimos de 0, github, github
• https://github.com/wunderkraut/migrate_source_example
• https://github.com/Ymbra/migrate_default_content
• ….
8. Anatomía de una migración
• {mi-modulo}.info.yml y {mi-modulo}.module
• Fichero necesario para instalar el módulo
• Carpeta /config/install
• Archivos YAML de configuración
• Carpeta /src/Plugin/migrate/source
• Clases de la Migración
• Carpeta /source
• Ubicación de los archivos a importar (csv, json), excepto BD
11. drush migrate
• drush migrate-import (mi)
• Ejecuta la migración
• drush migrate-status (ms)
• Muestra el estado de las migraciones
• drush migrate-rollback (mr)
• Revierte una migración y deja todo como estaba
• Otros comandos
• drush migrate-reset-status (mrs)
• drush migrate-stop (mst)
• drush migrate-messages (mmsg)
12. drush migrate-import
• Sintaxis:
• drush mi {nombre-de-la-migración} [opciones]
• Opciones
• --all: procesa todas las migraciones
• --group {nombre_grupo}: Procesa las migraciones de un grupo
• --limit {n}: procesa n registros (ideal para testeo)
• --force: Fuerza el procesado aunque fallen dependencias
• --tag: nombre de la etiqueta a procesar
• --execute-dependencies: Ejecuta antes las dependencias
• --feedback: frecuencia del refresco de mensajes
• --idlist: lista de ids a procesar separada por comas