Importación CSV para migrar Drupal 7 a 8 - Una guía completa
Publicado: 2020-02-11Una 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.

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 .

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 .

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.

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

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.

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.


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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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.
