Import CSV pour Migrer Drupal 7 à 8 - Un guide complet

Publié: 2020-02-11

Une 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.

CSV-importateur-drupal

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 .

csv1

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 .

csv2

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.

csv3

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

csv

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.

csv5

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.

csv6

csv7

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.

csv8

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.

csv9

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.

csv10

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.

csv11

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.

csv12

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.

csv13

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.

csv14

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.

csv15

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

csv16

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.

csv17

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.

csv18

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é.