-

Migration de données vers Drupal à l'aide de produits à partir d'une base de données externe - Guide

Comment pouvez-vous effectuer une migration de données produit depuis une base de données externe vers Drupal en utilisant les outils disponibles dans l'API Migrate ? Dans cet article de blog, je vais vous montrer comment se connecter à la base de données, préparer la structure de données, et utiliser les outils de migration disponibles dans Drush. Cette entrée s'adresse à ceux qui ont déjà de l'expérience en migration ainsi qu'à ceux qui commencent juste dans ce domaine. Je vous encourage à lire l'article ou à regarder la vidéo de la série “Nowoczesny Drupal” (la vidéo est en polonais).

Dans un article de blog précédent, nous avons discuté de l'importation de données dans Drupal depuis un fichier CSV. Cette fois, nous allons nous concentrer sur la migration depuis une base de données SQL externe vers le type de contenu "produits" dans Drupal. Cet exemple montre à quel point il est facile d'importer des produits depuis une base de données et comment gérer les problèmes éventuels au cours du processus.

Préparer la source pour la migration des données

Nos données se trouvent dans une base de données externe, dans une table nommée "product". Cette table contient les champs suivants :

  • ID Produit - un identifiant unique du produit,
  • Titre - le nom du produit,
  • Image - le chemin vers l'image du produit,
  • Description - une brève description du produit,
  • Catégorie - la catégorie à laquelle le produit appartient,
  • Tags - des étiquettes additionnelles attribuées au produit.
Un exemple de base de données externe pour les produits de migration de données vers Drupal.


Pour cet article, j'ai simplifié la structure de cette table en ajoutant des colonnes : "image," "category," et "tags." Les IDs de catégories, tags, et médias ont été donnés directement dans la table. Cela évite le besoin de migrations supplémentaires de dictionnaires et de fichiers média.

Configurer un environnement de migration de données

Pour migrer les données produit, nous devons d'abord préparer l'environnement Drupal. Pour ce guide, nous utilisons une installation propre de Droopler, à laquelle nous allons ajouter les modules nécessaires et créer un module personnalisé pour gérer le processus de migration.

Modules dans Drupal nécessaires pour la migration des données

La migration des données dans Drupal repose sur plusieurs modules que nous devons activer. Le premier est Migrate, un module de base faisant partie du noyau, qui fournit des fonctions de migration de base.

Si nous travaillons avec une base de données plus importante, les modules Migrate Plus et Migrate Tools seront utiles. Migrate Plus est une extension qui ajoute des fonctionnalités supplémentaires au processus de migration, et Migrate Tools est une boîte à outils qui intègre la migration avec Drush, vous permettant de gérer la migration directement depuis le terminal.

Créer votre module pour la migration des données

De plus, pour cet article, j'ai créé le module Demigrate. Il s'agit d'un module qui a été presque entièrement généré à l'aide de la commande Drupal Drush - Devil Generate.

Une fois généré, il doit être ajusté à nos besoins. Nous modifions la requête et par le champ select, au lieu de example, nous indiquons product :

Création du module Demigrate nécessaire pour la migration des données en utilisant la commande Drush.


L'étape suivante consiste à modifier la zone fields en ajoutant les champs appropriés de la table, à savoir "ID," "titre," "image," "description," "catégorie," et "tags."

J'ai ensuite généré un fichier YAML qui mappe les champs de la source aux champs dans Drupal. Cela détermine quels champs de la base de données doivent être attribués aux champs correspondants dans Drupal. Par exemple, le champ "titre" de la table sera attribué au champ "titre" dans Drupal, et "image" sera attribué au champ "field_image".

Création du module Demigrate nécessaire pour la migration des données en utilisant la commande Drush.


Ci-dessous, je montre où dans Drupal vous pouvez les spécifier :

Video file


Processus de migration de données en utilisant Drupal Drush

Lorsque notre module est prêt, nous pouvons procéder à la migration des données. Pour pouvoir faire cela, nous devons ajouter une définition dans setting.php pour se connecter à la base de données.

Migration de données avec des produits vers Drupal en utilisant Drupal Drush.


Ensuite, nous passons au terminal. Drupal, en combinaison avec l'outil Drush, propose plusieurs commandes qui simplifient grandement ce processus. 

Vérification du statut de la migration de données

Avant d'effectuer la migration, nous pouvons vérifier combien d'enregistrements sont en attente d'importation en utilisant la commande :

drush migrate:status

Cette commande affiche la liste des migrations avec des informations sur le nombre d'enregistrements disponibles pour l'importation. Dans notre cas, il y a dix produits dans la table, ce qui confirme l'exactitude des données préparées.

Importation des données

Pour importer les données, nous utilisons la commande :

drush migrate:import --group=migration_products

Cette commande vous permet d'importer tous les produits de la base de données dans Drupal.

Une fois l'importation terminée, les produits apparaîtront dans Drupal dans la section "Contenu".

La vue des produits importés depuis la base de données dans le système Drupal.


Si nous souhaitons importer seulement un enregistrement, nous pouvons utiliser l'option "limit" :

drush migrate:import --group=migration_products --limit=1
L'option pour importer seulement un produit depuis une base de données dans Drupal en utilisant Drupal Drush.


Le retour arrière de la migration de données

Parfois, il arrive que la migration ne se passe pas bien, par exemple, en raison de données incorrectes dans la description du produit. Dans ce cas, nous pouvons annuler l'ensemble de la migration en utilisant la commande :

drush migrate:rollback --group=migration_products

Après cette opération, tous les enregistrements importés seront supprimés de Drupal, et nous pourrons recommencer la migration après avoir corrigé les données.

Mettre à jour les données après la migration

La migration ne signifie pas toujours un processus unique. Souvent, après avoir importé des données, il y a besoin de les mettre à jour. Un exemple serait lorsque des modifications ont eu lieu dans l'ancienne base de données, et nous devons mettre à jour le contenu dans Drupal.

Nous pouvons le faire avec la commande :

drush migrate:import --group=migration_products --update

Cette commande mettra à jour uniquement les enregistrements qui ont été modifiés dans la base de données source, sans avoir besoin d'importer l'ensemble du jeu de données depuis le début.

Migration de données vers Drupal - résumé

La migration de données vers Drupal peut sembler compliquée, mais avec l'utilisation de l'API Migrate, de Drupal Drush et d'outils tels que Migrate Plus et Migrate Tools, l'ensemble du processus devient beaucoup plus simple et plus efficace. Il est important de préparer correctement les données, de générer un module personnalisé, et de connaître les commandes de base de Drush. Avec ces outils Drupal, vous pouvez transférer efficacement des données provenant de sources externes vers Drupal, assurant la continuité du système et minimisant le risque d'erreurs.

Importer depuis une base de données n'a pas besoin d'être difficile - il suffit de suivre les étapes ci-dessus, et le processus se déroulera sans accroc. Si vous avez des questions, nos experts en migration de données seront ravis de vous aider.

migrate Drupal 7 website Droptica