Cómo migrar a Drupal 8 desde una fuente SQL en 6 simples pasos

Publicado: 2020-11-24

Mucho se ha hablado sobre la importancia y los beneficios de migrar a Drupal 8. La migración de Drupal es la parte más importante de un flujo de trabajo de desarrollo. Necesitamos asegurarnos de que el contenido se transfiera sin problemas sin perder información y datos críticos del usuario. Consulte esta guía completa para una migración exitosa de Drupal 7 a Drupal 8.

Hay varias formas de migrar a Drupal 8 utilizando varias fuentes. Ya hemos escrito sobre cómo migrar de CSV a Drupal 8. Otras fuentes incluyen SQL, XML, JSON, etc. En este blog, discutiremos sobre la migración a Drupal 8 usando SQL como fuente.

Migratiom

¿Por qué SQL?

Si bien la elección de la fuente de datos depende en gran medida de la fuente de los datos existentes que se requieren migrar, algunas de las otras razones comunes para elegir la fuente SQL para una migración de Drupal 8 son:

  • Es fácil escribir consultas para obtener los datos requeridos al conectarse a la base de datos.
  • Migrar los datos de un servidor a otro será más rápido que cualquier otro método.
  • Reduce el uso de muchos módulos contribuidos.
  • No es necesario exportar datos de vistas, que se utiliza para exportar datos CSV de vistas desde sitios de Drupal 7.
  • No necesitaremos el campo de contraseña de Vistas que se usa para migrar información sensible (contraseñas en hash), ya que estamos usando DB query.
  • El módulo CSV de origen de migración tampoco es necesario ya que estamos utilizando el código fuente SQL.

¡Que comience el proceso de migración!

En este blog, migraremos usuarios a un sitio de Drupal 8. A continuación se muestran los pasos que seguiremos para migrar a Drupal 8:
1. Cree un módulo personalizado para la migración.
2. Consulte la base de datos de origen.
3. Defina el YML de migración y mapee los campos de Drupal identificados.
4. Cree un complemento de origen para la migración.
5. Procesar campos de dirección, valor múltiple y valor único.
6. Ejecute la migración con la herramienta de línea de comandos drush.

Paso 1: Crea un módulo personalizado para la migración de Drupal 8.

Primero, creemos un módulo personalizado a medida que lo crea en Drupal 8. Consulte este blog detallado para crear módulos personalizados en Drupal 8. Aquí estamos creando un módulo llamado “ migración de empleados de la empresa ”. La estructura del módulo es la siguiente:

módulo personalizado

company_employee_migrate.info.yml: Consiste en información básica sobre el módulo y sus dependencias.

company_employee_migrate.install: se utilizará para escribir scripts PHP que deberían activarse al instalar y desinstalar el módulo. En nuestro caso, estamos eliminando la configuración de migración cuando se desinstala el módulo. Vea la captura de pantalla a continuación para el script.

Base de datos de origen

company_employee_migrate.module: se utilizará para definir los ganchos generales del sitio. Estas son las cosas iniciales necesarias para el módulo. Explicaremos el resto en los próximos pasos.

Paso 2: referencia a la base de datos de origen

A continuación, necesitamos configurar la base de datos de origen de donde extraemos los datos. Actualice el archivo settings.php para su sitio Drupal moviéndose a webroot -> sitios -> predeterminado -> settings.php .

Agregue la nueva conexión de base de datos debajo de la conexión predeterminada como se muestra en la captura de pantalla a continuación. " Migrar " es clave para la base de datos de origen.

Módulo Drupal

Paso 3: Defina el YML de migración y mapee los campos de Drupal.

Ahora, necesitamos identificar los campos que queremos migrar y mapear esos campos en el yml de migración. En este ejemplo, estamos migrando la identificación de usuario, el nombre de usuario, la contraseña, el correo electrónico, el estado, la marca de tiempo creada, el nombre, el apellido, el puesto de trabajo, la dirección postal, etc.

Después de la identificación de los campos, debemos definir la migración en migrate_plus.migration.company_employee.yml . Ahora echemos un vistazo más de cerca a la migración yml y sus asignaciones.

YML de migración y mapa

id: ID único para el yml de migración.

etiqueta: nombre para mostrar de la migración.

Migration_group: nombre del grupo de migración.

source: Anotación Nombre del complemento de origen de la migración. Esto se definirá en la anotación @MigrateSource en src / Plugin / migrate / source / CompanyEmployee.php .

destino: nombre del complemento de destino de la migración. En este caso, es entidad: usuario ya que estamos migrando entidad de usuario.

proceso: En proceso, mapearemos los campos de Drupal con los campos de origen. Los valores del lado izquierdo son los nombres de las máquinas de campo y los del lado derecho son los nombres de los campos que pasamos desde el complemento fuente.

migration_dependencies: esta es una clave opcional. Esto se utilizará solo si existe alguna dependencia de otras migraciones.

Paso 4: crea un complemento de origen para la migración

El complemento de origen de migración es el corazón de la migración de SQL. A continuación se muestra la explicación detallada del complemento fuente.

  • El complemento de origen se puede crear en src / Plugin / migrate / source / CompanyEmployee.php
  • El espacio de nombres será Drupal \ company_employee_migrate \ Plugin \ migrate \ source .
  • Las anotaciones de @MigrateSource incluyen la identificación del complemento de origen que asignamos en la definición de migración.
  • Aquí estamos ampliando la clase Abstract SqlBase proporcionada por el módulo de migración central.

Vea la captura de pantalla a continuación como referencia.

complemento de origen para la migración

El complemento de origen debe implementar los siguientes tres métodos:

query (): Esto devolverá los datos de los campos de origen al conectarse a la base de datos de origen. Vea la captura de pantalla a continuación que devolverá los datos del campo donde la identificación del usuario es mayor que 0 y el correo del usuario termina en “@ phyins.com”.

complemento de origen para la migración


fields (): este método devolverá los campos disponibles en la fuente. A continuación, agregué el fragmento de código para la lista de campos disponibles junto con baseFields ().

campos base

getIds () : este método devolverá un ID único para la fila de origen. El siguiente código devolverá una ID de usuario de tipo entero, ya que uid será único para cada usuario.

Módulo Drupal

Aparte de estos métodos mencionados anteriormente, también tenemos:

prepareRow (): este método se llamará una vez para cada fila. Estamos cargando aquí los datos de diferentes tablas y procesos según el requerimiento. Cualquier propiedad que creemos usando $ row-> setSourceProperty estará disponible en el paso del proceso. Usaremos la consulta Drupal 8 DB para obtener los datos en prepareRow () .

baseFields (): Este contendrá una matriz de campos básicos de "users_field_data " que pueden ser usados ​​por el método query () . Encuentra el código en la imagen de abajo.

drupal 8 migrar

Paso 5: Procesar campos de dirección, valores múltiples y valor único.

En Drupal, tenemos diferentes tipos de campos y procesar algunos campos puede resultar un poco complicado para los desarrolladores al migrar contenido. He agregado los fragmentos de código para algunos campos a continuación:

Campos de valor único: estos campos incluyen campos de texto, campos booleanos, correo electrónico, etc. Busque el fragmento de código a continuación para obtener un campo de valor único; aquí, el field_first_name se puede configurar como se muestra a continuación.

Procesar valor único


Campos de valor múltiple: estos campos incluyen roles de usuario, roles de trabajo, campos de selección de valor múltiple, casillas de verificación, etc. Para un campo de valor múltiple, necesitamos devolver una matriz asociativa. A continuación, busque el fragmento de código del campo "roles".

Migración


Campos de dirección: migrar el campo de dirección proporcionado por el módulo de dirección será un poco diferente de migrar otros campos. Necesitamos preprocesar los datos consultados en una matriz asociativa con las claves adecuadas como se muestra a continuación para field_mailing_address .

Migración


Ahora todo listo para ejecutar la migración instalando el módulo company_employee_migrate en el sitio de Drupal 8.

Paso 6: Ejecute la migración usando la herramienta de línea de comando drush

Finalmente, estamos listos para nuestra migración SQL. Para ejecutar la migración, necesitamos instalar drush (si aún no lo está usando).

Lista de comandos drush útiles para la migración de Drupal:

drush migrate-status: Esto devolverá el estado de la migración con detalles.

migración usando drush

drush migrate-import migration_id: esto importará los datos desde la fuente al sitio.

migración de drush

drush migrate-reset-status migration_id: si la ejecución del script se ha detenido o pausado, el estado de la migración se mostrará como "Importando". Este comando restablecerá el estado de la migración a "Inactivo" para que podamos continuar con la importación de la migración.

migración de drush

drush migrate-rollback migration_id: se utilizará para volver a su estado anterior.

migración de drush