Import CSV pour Migrer Drupal 7 à 8 - Un guide complet
Publié: 2020-02-11Une migration Drupal 7 à 8 est tout sauf ennuyeuse car il y a tellement de façons d'effectuer une migration ! Selon la complexité du projet, nous pouvons choisir une technique qui lui convient le mieux. Celui dont nous allons discuter dans ce blog est de migrer le contenu et la configuration de Drupal 7 vers Drupal 8 en utilisant une méthode d'importation CSV.

Drupal fournit divers modules pour importer des données à partir de différentes sources telles que JSON, XML et CSV. Le système d'API de migration de base Drupal 8 offre une suite complète d'API qui peuvent essentiellement gérer tout type de migration d'une version précédente de Drupal vers Drupal 8.
Quelques travaux de préparation avant la migration Drupal 7 à 8
Afin de migrer de Drupal 7 vers Drupal 8 en utilisant l'import CSV, nous aurons besoin de ces modules.
Modules Drupal 7 -
Exportation des données de vues : Ce module doit être installé sur notre site Drupal 7. Le module d'exportation de données de vues aide à exporter les données au format CSV.
Views Password Field : Ce module permet de migrer les mots de passe qui enverront des mots de passe au format haché.
Modules Drupal 8 -
Migrer - Le module Drupal 8 Migrate aide à extraire des données de diverses sources vers Drupa 8.
Migrate Plus - Ce module Drupal 8 aidera à manipuler les données sources importées
Migrer Drupal - Ce module offre une assistance pour la migration de contenu et de configurations vers Drupal 8.
Migrer le CSV source – Ce module propose un plugin source qui peut migrer des entités et du contenu vers Drupal 8 à partir de fichiers .csv.
Outils de migration – Ce module Drupal 8 aide en offrant des outils d'interface utilisateur/commandes Drush pour gérer les migrations.
Module de développement de configuration - Ce module aide à importer des fichiers de configuration vers Drupal 8.
Que la migration vers Drupal 8 commence !
Tout d'abord, nous devons créer un module personnalisé pour notre migration vers Drupal 8 . Appelons ce module test_migrate . Et nous savons qu'après avoir créé un module personnalisé, nous devons créer le fichier info.yml .

La capture d'écran ci-dessus montre les clés requises pour info.yml .
Une fois le fichier info.yml créé, nous devons créer un groupe de migration pour la migration. Ce groupe de migration doit être créé dans le chemin : test_migration > config > install . Le nom du groupe doit être migrate_plus.migration_group.test_migration.yml .

La capture d'écran ci-dessus montre la structure des dossiers pour créer un groupe de migration.
Dans le fichier migrate_plus.migration_group.test_migration.yml , nous devons écrire l'identifiant, l'étiquette et la description du groupe de migration qui est illustré dans la capture d'écran ci-dessous.

Après avoir créé le groupe de migration, nous devons installer ce groupe dans notre fichier info.yml .

Maintenant, nous allons écrire un script de migration pour les utilisateurs, le terme de taxonomie, les paragraphes, les types de contenu. Notez que vous migrez dans le même ordre puisqu'il y aura un lien entre ces entités. Par exemple, le contenu sera créé par un utilisateur particulier - nous devons donc d'abord migrer les utilisateurs et après cette taxonomie, le type de contenu.
Écrivons maintenant un script dans le fichier yaml pour la migration des utilisateurs. Ainsi, pour écrire la migration des utilisateurs, nous avons besoin du fichier yaml de l' utilisateur avec le nom migrate_plus.migration.test_migration_users.yml et le script de migration est présenté ci-dessous.

Ce sont les clés requises pour la migration ici du fichier csv source que nous devons migrer. Les fichiers CSV doivent être placés dans le chemin assets > csv > user.csv . Users.csv est également affiché ci-dessous.


Chemin - Il indique le chemin du fichier csv.
header_row_count - Cela donnera le nombre de lignes qui est l'en-tête d'une colonne particulière.
Clés - qui doivent être uniques pour chaque ligne.
Processus - Dans ce cas, nous mappons les fichiers csv aux champs.

L'image ci-dessus montre le mappage entre les champs et csv. Ici, le nom est le nom de la machine du champ du nom d'utilisateur et le titre est le titre de la colonne csv. Si nous avons plusieurs données pour un seul champ, nous utilisons des délimiteurs. Les utilisateurs peuvent avoir plusieurs rôles dans ce cas, nous écrivons comme indiqué dans l'image ci-dessus.
Les images sont migrées en écrivant un plugin personnalisé. Le plugin personnalisé peut être écrit dans le chemin src > plugin > migrate > process . Dans l'image ci-dessus, vous pouvez voir que user_image_import_process est un plugin personnalisé écrit pour migrer les images utilisateur.

Dans UserImportProcess.php, nous écrivons la fonction qui copiera l'image et l'enregistrera dans la destination. Le script est montré dans l'image ci-dessous.

Afin d'identifier où les images doivent être enregistrées, nous écrirons une autre fonction ImageImportprocess . Dans cette fonction, nous mentionnerons le nom de la machine de l'image.

Dans le fichier info.yml des utilisateurs , il y a une section de destination qui indiquera où les données migrées doivent être stockées et qui est une entité. Ceci est marqué dans l'image ci-dessous.

Après avoir créé le code pour les utilisateurs, nous devons écrire yaml pour les termes de taxonomie. Notez que si vous n'avez qu'un champ de titre dans votre taxonomie, vous n'avez pas besoin d'écrire un fichier yaml séparé. Si vous avez plusieurs champs en terme de taxonomie, vous devez alors écrire un fichier yaml séparé. En termes de taxonomie, nous aurons tid comme clé puisque tid sera unique pour chaque terme.

Après cela, nous allons migrer les paragraphes. Pour cela, nous devons créer un fichier yaml séparé. Le code à migrer est indiqué dans l'image ci-dessous.

Enfin, migrons le type de contenu. Le fichier yaml pour le type de contenu est affiché dans le code ci-dessous.
label : 'Migrer les données de type de contenu à partir du fichier csv'
groupe_migration : migration_test
source : id : test_migration_content

plugin : csv
# Chemin complet du fichier.
chemin : 'modules/custom/test_migrate/assets/csv/content.csv'
header_row_count : 1
clés :
- nid
processus :
# Ajout du mappage entre les champs et les colonnes csv.
titre : titre
promouvoir : promu_à_front_page
collant : collant
field_display_name : display_name
field_marketing_tagline : marketing_tagline
field_taxonomy :
plugin : entity_lookup
source : Taxonomie
entity_type : taxonomy_term
bundle_key : vidéo
bundle : taxonomie
value_key : nom
corps/valeur : corps
corps/format :
plugin : default_value
default_value : "full_html"
field_paragraph :
- plugin : exploser
délimiteur : "|"
source : fcid
- plugin : skip_on_empty
méthode : processus
- plugin : migration_lookup
migration : test_migration_paragraphes
no_stub : vrai
- plugin : itérateur
processus :
target_id : '0'
target_revision_id : '1'
destination :
plugin : 'entity:node'
default_bundle : contenu
migration_dependencies :
requis :
- test_migration_paragraph
- test_migration_taxonomie
dépendances : { }
Après avoir écrit tous les fichiers YAML la test_migrate.info.yml de migration contiendra le dessous des installations.

Une fois toutes ces étapes terminées, rendez-vous sur votre site et installez votre module personnalisé.

Ensuite, accédez à votre projet dans le terminal et exécutez cette commande "drush ms" pour vérifier l'état de la migration, comme indiqué dans l'image ci-dessous.

Pour migrer, utilisez la commande drush mim migration-id . Nous pouvons voir l'ID de migration dans l'image ci-dessus.
Une fois cela fait, si vous vérifiez l'état de la migration, vous pouvez voir le nombre d'éléments migrés.

Vous pouvez maintenant observer que tout le contenu est migré. S'il y a une erreur dans la migration des données, le processus se terminera à cette instance particulière. Vérifiez le problème avec ce contenu, puis vous pouvez à nouveau redémarrer la migration.
Choses à retenir
Si la migration est terminée entre les processus, l'état de la migration s'affichera comme « importation ». Pour changer le statut en inactif, vous devez exécuter la commande drush mrs migration-id . Ensuite, exécutez la commande drush mim migration-id
Si vous souhaitez annuler le contenu migré, exécutez la commande drush mr migration-id
Si vous avez modifié quoi que ce soit dans le code après avoir démarré le processus de migration, assurez-vous d'exécuter la commande drush cdi test_migration . Cette commande vous aidera à refléter les changements lors de la migration. Une fois cela fait, effectuez une vérification approfondie sur votre site pour voir si tout le contenu est migré.
