SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Introducción a Migrate
API
Drupal Sevilla - 02/2018
1
Sobre mí Me llamo Leandro Luvigne
Desarrollador Backend en SDOS
IRC: lluvigne
Drupal.org: lluvigne
Twitter: lluvigne
2
Índice
1. Que es Migrate API
2. Como preparar una migración
○ Herramientas adicionales.
○ Estructura de ficheros.
○ Archivo de configuración para definir
una migración.
○ Source plugins.
○ Process plugins.
○ Destination plugins.
3. Ejecución de una migración
○ Base de datos origen.
○ Otros orígenes de datos.
○ Ejecución con Drush.
○ Ejecución desde interfaz.
○ Ejecución de otras operaciones.
4. Demo
3
Que es Migrate API
4
Que es Migrate API
● Servicios que nos proporcionan la
posibilidad de migrar datos a un Drupal 8
● A partir de Drupal 8 se incluye en core
○ Migrate API
○ Migrate Drupal
○ Migrate Drupal UI
● Se trata de servicios ETL: Extract -
Transform - Load
○ Extract
■ Source Plugins
○ Transform
■ Process Plugins
○ Load
■ Destination Plugins
5
Como preparar una migración
6
Herramientas adicionales
● Migrate tools
○ Provee utilidades para gestionar y
ejecutar migraciones
○ Nuevos comandos Drush:
migrate-import
migrate-status
migrate-rollback
● Migrate plus
○ Ofrece más funcionalidad a Migrate
API
○ Permite definir migraciones como
entidades de configuración
○ Nuevo evento PREPARE_ROW
○ Nuevos plugins de tipo process,
source y destination
7
Estructura de ficheros
● Necesitaremos crear un módulo donde
definir la migración
● Lo mínimo que necesitamos para definir
una migración son los archivos de
configuración
● Si necesitamos customizar datos o definir
una entidad custom a crear, se pueden
definir plugins
MODULE_NAME
|-- config
| |-- install
| |-- Ficheros.YML
|-- src
| |-- Plugin
| |-- migrate
| |-- source
| | |-- Source.php (opcional)
| |-- destination
| | |-- Destination.php (opcional)
| |-- process
| | |-- Process.php (opcional)
|-- MODULE_NAME.info.yml
|-- MODULE_NAME.module (opcional)
8
Fichero de configuración de migración
● Se encuentran en: module_name/config/install
● Nomenclatura:
○ migrate_plus.migration.my_migration.yml
○ migrate_plus.migration_group.my_group.yml
● Estructura del fichero:
○ Información base de la migración
○ Origen de datos: source plugin a utilizar y su configuración
○ Procesamiento de datos: process plugins a utilizar
○ Destino: destination plugin a utilizar y su configuración
○ Dependencias: definir dependencias con otras migraciones
9
10
11
Source plugin
● Componente encargado de extraer los datos del origen
● Existen plugins predefinidos en core
○ SqlBase: origen de datos en SQL
○ FieldableEntity: origen de datos Drupal (6 o 7)
● Podemos modificarlos extendiendo estos plugins
● Existen módulos que proveen nuevos source plugins (ej: migrate_source_csv)
● Ruta: /module_name/src/Plugin/migrate/source
● Track changes
12
Process key
● Componente que obtiene y transforma un dato antes de guardarlo
● En este apartado se indican los valores “destino:origen” para cada campo
● Por defecto siempre se utiliza el plugin ‘get’
● Principales plugins definidos:
○ Callback
○ Copy
○ MigrationLookup
○ SkipOnEmpty
○ DefaultValue
● Ruta: /module_name/src/Plugin/migrate/process
13
14
15
Destination plugin
● Componente encargado del destino de los datos (entidad, tabla, etc.)
● Existen plugins para casi todo tipo de entidad en Core
○ Node
○ User
○ Block
○ Otros...
● También podemos definir plugins personalizados
● Ruta: /module_name/src/Plugin/migrate/destination
16
Cómo ejecutar una migración
Base de datos origen
17
● Se ha de configurar en el settings.php o settings.local.php
● En cada archivo de configuración se ha de indicar la base de datos
○ key: database_name
● Si la base de datos la llamamos ‘migrate’ no hace falta indicar el nombre
explícitamente
Base de datos origen
$databases['migrate']['default'] = array (
'database' => ‘database_name’,
'username' => 'database_username',
'password' => 'username_password',
'prefix' => '',
'host' => 'HOST',
'port' => 'PORT,
'namespace' => 'DrupalCoreDatabaseDrivermysql',
'driver' => 'mysql',
);
18
Otros orígenes de datos
● XML, JSON, SOAP, etc.
● Uno de los más usados son las hojas CSV.
● El plugin es ofrecido por el módulo
migrate_source_csv.
19
● source:
plugin: csv
path: '/path/to/articles.csv'
delimiter: ','
enclosure: '"'
header_row_count: 1
keys:
- id
column_names:
0:
id: 'Unique Id'
1:
title: 'Title'
2:
body: 'Post body'
Ejecución con Drush
● Migrate Tools provee comandos para poder ejecutar y gestionar migraciones
● Lista de comandos:
○ migrate-status: Muestra el estado de todas las migraciones definidas
○ migrate-import: Ejecuta una migración o un grupo de migraciones
■ migrate-import NOMBREMIGRACION
■ migrate-import --group NOMBREGRUPO
■ migrate-import --update NOMBREMIGRACION
○ migrate-rollback: Deshace una migración o grupo de migraciones
○ migrate-reset-status: Reinicia el estado de una migración
○ migrate-stop: Detiene de forma limpia una migración
○ migrate-messages: Muestra los mensajes relacionados con el comando import
20
Ejecución desde interfaz
● La interfaz también la provee Migrate Tools
● Permite ejecutar las mismas operaciones que con Drush
● Aún está en desarrollo, aunque ya es funcional casi al 100%
● Falta algo de feedback en pantalla al ejecutar alguna operación
21
22
23
Demo
¿Preguntas?
24
Enlaces de interés
25
● Código de ejemplo: https://github.com/lluvigne/example_migration
● Migrate API Overview:
https://www.drupal.org/docs/8/api/migrate-api/migrate-api-overview
● Migrating basic data:
https://evolvingweb.ca/blog/drupal-8-migration-migrating-basic-data-part-1
Gracias!
26

Más contenido relacionado

Similar a Introducción a Migrate API en Drupal 8

Trabajo de sistemas de informacion
Trabajo de sistemas de informacionTrabajo de sistemas de informacion
Trabajo de sistemas de informacion
Evelin Oña
 
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez
 
Tema 1 Introduccion e instalacion Drupal
Tema 1  Introduccion e instalacion DrupalTema 1  Introduccion e instalacion Drupal
Tema 1 Introduccion e instalacion Drupal
Meztli Valeriano Orozco
 

Similar a Introducción a Migrate API en Drupal 8 (20)

PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
MuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción DataweaveMuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción Dataweave
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Computación distribuida usando Python
Computación distribuida usando PythonComputación distribuida usando Python
Computación distribuida usando Python
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elk
 
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
 
php y mysql
php y mysqlphp y mysql
php y mysql
 
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
 
Reporte cluster
Reporte clusterReporte cluster
Reporte cluster
 
Migrando data - DRUPAL
Migrando data - DRUPALMigrando data - DRUPAL
Migrando data - DRUPAL
 
Web Mapping con Django
Web Mapping con DjangoWeb Mapping con Django
Web Mapping con Django
 
Integración de Mahara con Moodle (MoodleMoot España 2010)
Integración de Mahara con Moodle (MoodleMoot España 2010)Integración de Mahara con Moodle (MoodleMoot España 2010)
Integración de Mahara con Moodle (MoodleMoot España 2010)
 
Dinamic area formación mongodb
Dinamic area   formación mongodbDinamic area   formación mongodb
Dinamic area formación mongodb
 
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
 
Trabajo de sistemas de informacion
Trabajo de sistemas de informacionTrabajo de sistemas de informacion
Trabajo de sistemas de informacion
 
PHP Tema 4 - Acceso a bases de datos MySQL en PHP
PHP Tema 4 - Acceso a bases de datos MySQL en PHPPHP Tema 4 - Acceso a bases de datos MySQL en PHP
PHP Tema 4 - Acceso a bases de datos MySQL en PHP
 
Clase 14 bundles útiles
Clase 14 bundles útilesClase 14 bundles útiles
Clase 14 bundles útiles
 
Workshop Técnicas Replicacion I
Workshop Técnicas Replicacion IWorkshop Técnicas Replicacion I
Workshop Técnicas Replicacion I
 
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
 
Tema 1 Introduccion e instalacion Drupal
Tema 1  Introduccion e instalacion DrupalTema 1  Introduccion e instalacion Drupal
Tema 1 Introduccion e instalacion Drupal
 

Último

TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxTECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
UPSE
 
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfTECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
UPSE
 

Último (9)

Modelado de Casos de uso del negocio
Modelado de  Casos  de  uso  del negocioModelado de  Casos  de  uso  del negocio
Modelado de Casos de uso del negocio
 
Tipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfTipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdf
 
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxTECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
 
Especificación casos de uso del negocio
Especificación  casos de uso del negocioEspecificación  casos de uso del negocio
Especificación casos de uso del negocio
 
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
 
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfTECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
 
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxCiberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
 
El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)
 
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptxCIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
 

Introducción a Migrate API en Drupal 8

  • 2. Sobre mí Me llamo Leandro Luvigne Desarrollador Backend en SDOS IRC: lluvigne Drupal.org: lluvigne Twitter: lluvigne 2
  • 3. Índice 1. Que es Migrate API 2. Como preparar una migración ○ Herramientas adicionales. ○ Estructura de ficheros. ○ Archivo de configuración para definir una migración. ○ Source plugins. ○ Process plugins. ○ Destination plugins. 3. Ejecución de una migración ○ Base de datos origen. ○ Otros orígenes de datos. ○ Ejecución con Drush. ○ Ejecución desde interfaz. ○ Ejecución de otras operaciones. 4. Demo 3
  • 5. Que es Migrate API ● Servicios que nos proporcionan la posibilidad de migrar datos a un Drupal 8 ● A partir de Drupal 8 se incluye en core ○ Migrate API ○ Migrate Drupal ○ Migrate Drupal UI ● Se trata de servicios ETL: Extract - Transform - Load ○ Extract ■ Source Plugins ○ Transform ■ Process Plugins ○ Load ■ Destination Plugins 5
  • 6. Como preparar una migración 6
  • 7. Herramientas adicionales ● Migrate tools ○ Provee utilidades para gestionar y ejecutar migraciones ○ Nuevos comandos Drush: migrate-import migrate-status migrate-rollback ● Migrate plus ○ Ofrece más funcionalidad a Migrate API ○ Permite definir migraciones como entidades de configuración ○ Nuevo evento PREPARE_ROW ○ Nuevos plugins de tipo process, source y destination 7
  • 8. Estructura de ficheros ● Necesitaremos crear un módulo donde definir la migración ● Lo mínimo que necesitamos para definir una migración son los archivos de configuración ● Si necesitamos customizar datos o definir una entidad custom a crear, se pueden definir plugins MODULE_NAME |-- config | |-- install | |-- Ficheros.YML |-- src | |-- Plugin | |-- migrate | |-- source | | |-- Source.php (opcional) | |-- destination | | |-- Destination.php (opcional) | |-- process | | |-- Process.php (opcional) |-- MODULE_NAME.info.yml |-- MODULE_NAME.module (opcional) 8
  • 9. Fichero de configuración de migración ● Se encuentran en: module_name/config/install ● Nomenclatura: ○ migrate_plus.migration.my_migration.yml ○ migrate_plus.migration_group.my_group.yml ● Estructura del fichero: ○ Información base de la migración ○ Origen de datos: source plugin a utilizar y su configuración ○ Procesamiento de datos: process plugins a utilizar ○ Destino: destination plugin a utilizar y su configuración ○ Dependencias: definir dependencias con otras migraciones 9
  • 10. 10
  • 11. 11 Source plugin ● Componente encargado de extraer los datos del origen ● Existen plugins predefinidos en core ○ SqlBase: origen de datos en SQL ○ FieldableEntity: origen de datos Drupal (6 o 7) ● Podemos modificarlos extendiendo estos plugins ● Existen módulos que proveen nuevos source plugins (ej: migrate_source_csv) ● Ruta: /module_name/src/Plugin/migrate/source ● Track changes
  • 12. 12
  • 13. Process key ● Componente que obtiene y transforma un dato antes de guardarlo ● En este apartado se indican los valores “destino:origen” para cada campo ● Por defecto siempre se utiliza el plugin ‘get’ ● Principales plugins definidos: ○ Callback ○ Copy ○ MigrationLookup ○ SkipOnEmpty ○ DefaultValue ● Ruta: /module_name/src/Plugin/migrate/process 13
  • 14. 14
  • 15. 15 Destination plugin ● Componente encargado del destino de los datos (entidad, tabla, etc.) ● Existen plugins para casi todo tipo de entidad en Core ○ Node ○ User ○ Block ○ Otros... ● También podemos definir plugins personalizados ● Ruta: /module_name/src/Plugin/migrate/destination
  • 16. 16 Cómo ejecutar una migración
  • 17. Base de datos origen 17 ● Se ha de configurar en el settings.php o settings.local.php ● En cada archivo de configuración se ha de indicar la base de datos ○ key: database_name ● Si la base de datos la llamamos ‘migrate’ no hace falta indicar el nombre explícitamente
  • 18. Base de datos origen $databases['migrate']['default'] = array ( 'database' => ‘database_name’, 'username' => 'database_username', 'password' => 'username_password', 'prefix' => '', 'host' => 'HOST', 'port' => 'PORT, 'namespace' => 'DrupalCoreDatabaseDrivermysql', 'driver' => 'mysql', ); 18
  • 19. Otros orígenes de datos ● XML, JSON, SOAP, etc. ● Uno de los más usados son las hojas CSV. ● El plugin es ofrecido por el módulo migrate_source_csv. 19 ● source: plugin: csv path: '/path/to/articles.csv' delimiter: ',' enclosure: '"' header_row_count: 1 keys: - id column_names: 0: id: 'Unique Id' 1: title: 'Title' 2: body: 'Post body'
  • 20. Ejecución con Drush ● Migrate Tools provee comandos para poder ejecutar y gestionar migraciones ● Lista de comandos: ○ migrate-status: Muestra el estado de todas las migraciones definidas ○ migrate-import: Ejecuta una migración o un grupo de migraciones ■ migrate-import NOMBREMIGRACION ■ migrate-import --group NOMBREGRUPO ■ migrate-import --update NOMBREMIGRACION ○ migrate-rollback: Deshace una migración o grupo de migraciones ○ migrate-reset-status: Reinicia el estado de una migración ○ migrate-stop: Detiene de forma limpia una migración ○ migrate-messages: Muestra los mensajes relacionados con el comando import 20
  • 21. Ejecución desde interfaz ● La interfaz también la provee Migrate Tools ● Permite ejecutar las mismas operaciones que con Drush ● Aún está en desarrollo, aunque ya es funcional casi al 100% ● Falta algo de feedback en pantalla al ejecutar alguna operación 21
  • 22. 22
  • 25. Enlaces de interés 25 ● Código de ejemplo: https://github.com/lluvigne/example_migration ● Migrate API Overview: https://www.drupal.org/docs/8/api/migrate-api/migrate-api-overview ● Migrating basic data: https://evolvingweb.ca/blog/drupal-8-migration-migrating-basic-data-part-1