Importación CSV para migrar Drupal 7 a 8 - Una guía completa

Publicado: 2020-02-11

Una migración de Drupal 7 a 8 no es nada aburrida porque hay muchas formas de realizar una migración. Dependiendo de la complejidad del proyecto, podemos elegir la técnica que más se adapte a él. El que vamos a discutir en este blog es migrar el contenido y la configuración de Drupal 7 a Drupal 8 usando un método de importación CSV.

CSV-importador-drupal

Drupal proporciona varios módulos para importar datos de diferentes fuentes como JSON, XML y CSV. El sistema de API de migración del núcleo de Drupal 8 ofrece un conjunto completo de API que esencialmente pueden manejar cualquier tipo de migración desde una versión anterior de Drupal a Drupal 8.

Un poco de trabajo de preparación antes de la migración de Drupal 7 a 8

Para migrar de Drupal 7 a Drupal 8 usando la importación CSV, necesitaremos estos módulos.

Módulos Drupal 7 -

  • Vistas Exportación de datos : Este módulo debe instalarse en nuestro sitio de Drupal 7. El módulo de exportación de datos de vistas ayuda a exportar los datos en formato CSV.

  • Vistas Campo de contraseña : este módulo ayuda a migrar contraseñas que enviarán contraseñas en formato hash.

Módulos Drupal 8 -

  • Migrar : el módulo Drupal 8 Migrate ayuda a extraer datos de varias fuentes a Drupa 8.

  • Migrate Plus: este módulo de Drupal 8 ayudará a manipular los datos de origen importados

  • Migrar Drupal: este módulo ofrece soporte para migrar contenido y configuraciones a Drupal 8.

  • Migrar CSV de origen: este módulo ofrece un complemento de origen que puede migrar entidades y contenido a Drupal 8 desde archivos .csv.

  • Herramientas de migración : este módulo de Drupal 8 ayuda al ofrecer herramientas de interfaz de usuario / comandos Drush para administrar las migraciones.

  • Módulo de desarrollo de configuración : este módulo ayuda a importar archivos de configuración a Drupal 8.

¡Que comience la migración de Drupal 8!

Primero, necesitamos crear un módulo personalizado para nuestra migración de Drupal 8 . Nombramos este módulo como test_migrate . Y sabemos que después de crear un módulo personalizado necesitamos crear el archivo info.yml .

csv1

La captura de pantalla anterior muestra las claves necesarias para info.yml .

Una vez que se crea el archivo info.yml , necesitamos crear un grupo de migración para la migración. Este grupo de migración debe crearse en la ruta: test_migration> config> install . El nombre del grupo debe ser migrate_plus.migration_group.test_migration.yml .

csv2

La captura de pantalla anterior muestra la estructura de carpetas para crear un grupo de migración.

Dentro del archivo migrate_plus.migration_group.test_migration.yml , necesitamos escribir la identificación, la etiqueta y la descripción del grupo de migración que se muestra en la captura de pantalla a continuación.

csv3

Después de crear el grupo de migración, necesitamos instalar este grupo en nuestro archivo info.yml .

csv

Ahora, vamos a escribir un script de migración para Usuarios, Término de taxonomía, Párrafos, Tipos de contenido. Tenga en cuenta que está migrando en el mismo orden, ya que habrá un vínculo entre estas entidades. Por ejemplo, el contenido será creado por un usuario en particular, por lo que primero necesitamos migrar usuarios y luego de esa taxonomía, el tipo de contenido.

Ahora escribamos un script en el archivo yaml para la migración de usuarios. Entonces, para escribir la migración de usuarios, necesitamos el archivo yaml de usuario con el nombre migrate_plus.migration.test_migration_users.yml y el script para la migración se muestra a continuación.

csv5

Estas son las claves necesarias para la migración aquí el archivo csv de origen que necesitamos migrar. Los archivos csv deben colocarse en la ruta assets> csv> user.csv . Users.csv también se muestra a continuación.

csv6

csv7

Ruta : indica la ruta del archivo csv.

header_row_count : esto le dará el recuento de filas, que es el encabezado de una columna en particular.

Claves , que deberían ser únicas para cada fila.

Proceso : en esto estamos mapeando archivos csv a campos.

csv8

La imagen de arriba muestra el mapeo entre campos y csv. Aquí, el nombre es el nombre de la máquina del campo de nombre de usuario y el título es el título de la columna csv. Si tenemos varios datos para un solo campo, usamos delimitadores. Los usuarios pueden tener múltiples roles en ese caso escribimos como se muestra en la imagen de arriba.

Las imágenes se migran escribiendo un complemento personalizado. El complemento personalizado se puede escribir en la ruta src> complemento> migrar> proceso . En la imagen de arriba, puede ver que user_image_import_process es un complemento personalizado escrito para migrar imágenes de usuario.

csv9

Dentro de UserImportProcess.php estamos escribiendo la función que copiará la imagen y la guardará en el destino. La secuencia de comandos se muestra en la imagen a continuación.

csv10

Para identificar dónde se deben guardar las imágenes, escribiremos una función más ImageImportprocess . En esa función mencionaremos el nombre de máquina de la imagen.

csv11

En el archivo info.yml de los usuarios hay una sección de destino que indicará dónde se almacenarán los datos migrados y cuál es una entidad. Esto está marcado en la imagen de abajo.

csv12

Después de crear el código para los usuarios, necesitamos escribir yaml para los términos de taxonomía. Tenga en cuenta que si solo tiene un campo de título en su taxonomía, no es necesario que escriba un archivo yaml por separado. Si tiene varios campos en el término de taxonomía, entonces necesita escribir un archivo yaml separado. En términos de taxonomía, tendremos tid como clave ya que tid será único para cada término.

csv13

Después de esto migraremos los párrafos. Para eso, necesitamos crear un archivo yaml separado. El código para migrar se muestra en la siguiente imagen.

csv14

Por último, migremos el tipo de contenido. El archivo yaml para el tipo de contenido se muestra en el siguiente código.

etiqueta : 'Migrar datos de tipo de contenido del archivo csv'

migración_grupo : prueba_migración

fuente : id : test_migration_content

complemento : csv

# Ruta completa al archivo.

ruta : 'modules / custom / test_migrate / assets / csv / content.csv'

header_row_count : 1

llaves :

- nid

proceso :

# Añadiendo el mapeo entre los campos y las columnas csv.

título : título

promover : promocionado_a_frente_pagina

pegajoso : pegajoso

field_display_name : display_name

field_marketing_tagline : marketing_tagline

field_taxonomy :

complemento : entity_lookup

fuente : Taxonomía

entity_type : taxonomy_term

bundle_key : vid

paquete : taxonomía

value_key : nombre

cuerpo / valor : cuerpo

cuerpo / formato :

complemento : valor_predeterminado

valor_predeterminado : "full_html"

field_paragraph :

- complemento : explotar

delimitador : "|"

fuente : fcid

- complemento : skip_on_empty

método : proceso

- complemento : migration_lookup

migración : test_migration_paragraphs

no_stub : verdadero

- complemento : iterador

proceso :

target_id : '0'

target_revision_id : '1'

destino :

complemento : 'entidad: nodo'

paquete_predeterminado : contenido

dependencias_de_migración :

requerido :

- test_migration_paragraph

- test_migration_taxonomy

dependencias : {}

Después de escribir todos los archivos YAML la migración test_migrate.info.yml contendrá el siguiente instalaciones.

csv15

Una vez que termine todos estos pasos, vaya a su sitio e instale su módulo personalizado.

csv16

A continuación, vaya a su proyecto en la terminal y ejecute este comando "drush ms" para verificar el estado de la migración como se muestra en la imagen de abajo.

csv17

Para migrar, use el comando drush mim migration-id . Podemos ver el ID de migración en la imagen de arriba.

Una vez hecho esto, si verifica el estado de la migración, puede ver la cantidad de elementos migrados.

csv18

Ahora puedes observar que se migra todo el contenido. Si hay algún error en la migración de datos, el proceso terminará en esa instancia en particular. Verifique el problema con ese contenido y luego, una vez más, puede reiniciar la migración.

Cosas para recordar

  • Si la migración finaliza entre el proceso, el estado de la migración se mostrará como "importando". Para cambiar el estado a inactivo, debe ejecutar el comando drush mrs migration-id . A continuación, ejecute el comando drush mim migration-id

  • Si desea deshacer el contenido migrado, ejecute el comando drush mr migration-id

  • Si ha cambiado algo en el código después de iniciar el proceso de migración, asegúrese de ejecutar el comando drush cdi test_migration . Este comando le ayudará a reflejar los cambios durante la migración. Una vez hecho esto, realice una verificación exhaustiva en su sitio para ver si se ha migrado todo el contenido.