Fermer

juin 11, 2023

Migrer des fichiers CSV dans Drupal

Migrer des fichiers CSV dans Drupal


Aujourd’hui, nous allons vous apprendre à importer du contenu dans Drupal à partir d’un fichier CSV (Comma-Separated Values). La version la plus récente du module Migrate Source CSV sera utilisée. Nous allons montrer comment configurer le plugin source pour lire les fichiers. Nous passerons également en revue une toute nouvelle fonction qui vous permet de définir l’emplacement du fichier à l’aide de stream wrappers. Vous pouvez aller sur https://www.tothenew.com/blog/drupal-data-migration-with-migrate-api/ pour acquérir une compréhension de base de l’API de migration. Allons-y.

J’ai créé un type de contenu appelé profil pour cet exemple, et il contient trois champs : prénom, nom et e-mail.

Tout d’abord, créez un module personnalisé appelé csv_migration

fichier csv_migration.info.yml

Les modules répertoriés dans les dépendances doivent être installés en premier. Le module Core migrate et les modules Contrib migrate_plus, migrate_file, migrate_tools.

Maintenant, notre csv_migrations_profile.yml ira dans le dossier migrations

Code

Seuls les composants cruciaux de la migration CSV seront couverts aujourd’hui.

Nous allons lire à partir de fichiers CSV, ce qui est la principale différence.

Comprendre la source est crucial pour tout projet de migration. Les caractères à utiliser comme délimiteurs, encadrements et caractères d’échappement doivent tous être pris en compte lors de la migration des données CSV. Pour l’instant, concentrons-nous sur le fichier CSV ci-dessous, dont la première ligne fait office d’en-tête de colonne :

Ce fichier sera utilisé dans le nœud migration. Les quatre colonnes seront utilisées comme suit :

  • `ID` est l’identifiant unique de chaque enregistrement dans ce fichier CSV.
  • `Name` est le prénom d’une personne. Ceci sera utilisé comme titre de nœud avec une combinaison avec Last.
  • `Last` est le nom de famille d’une personne. Ceci sera utilisé comme titre de nœud avec une combinaison avec le nom.
  • `Email` est l’identifiant de messagerie de la personne.

Le nom du plug-in est « csv ». Après cela, spécifiez le ‘chemin’ vers le fichier réel. Le chemin est ici positionné par rapport à la racine de Drupal. La dernière étape consiste à spécifier un tableau de noms de colonnes appelé « ids » qui sera utilisé pour identifier chaque enregistrement de manière unique. La colonne ‘ID’ remplit cette fonction, comme déjà mentionné. Les noms de colonne du fichier CSV n’ont pas tous besoin d’être spécifiés. Ceux-ci seront rendus facilement disponibles par le plugin. Le plugin source CSV peut être configuré de cette manière de la manière la plus simple.

Emplacement des fichiers CSV

  • Il existe trois façons de spécifier l’emplacement du fichier CSV lors de la configuration de la configuration ‘path’.
  • Utilisez un chemin relatif à la racine Drupal. Une barre oblique (/) ne doit pas être utilisée pour commencer le chemin.
  • Cette stratégie est ce que cette démo emploie. ‘modules/custom/my_module/csv_files/example.csv’, par exemple.
  • Utilisez un chemin absolu qui pointe vers l’emplacement du système de fichiers où le CSV est stocké. Commencez le chemin par une barre oblique (/). ‘/var/www/drupal/modules/custom/my_module/csv_files/example.csv’, par exemple.
  • Mettez un wrapper de flux à utiliser. La branche 8.x-3.x du module a d’abord inclus cette capacité. Ils sont inaccessibles aux versions antérieures.

Vous disposez de diverses options pour spécifier l’emplacement du fichier CSV lors de l’utilisation d’encapsuleurs de flux. Par exemple:

Fichiers conservés dans les systèmes de fichiers privés, publics et temporaires de Drupal. Cela utilise des fonctionnalités déjà intégrées à Drupal. ‘public://csv_files/example.csv,’ comme exemple.
Profils, modules et fichiers spécifiques à un thème. Pour utiliser cette fonctionnalité, vous pouvez soit utiliser le module wrapper de flux système, soit appliquer cette modification principale. ‘module://my_module/csv_files/example.csv,’ par exemple.

Fichiers de serveurs distants, y compris les flux RSS.
Pour obtenir cette fonctionnalité, utilisez le module Remote stream wrapper. ‘https://tothenew.com/csv-files/example.csv,’ par exemple.

Configuration du plug-in source CSV

Le code source du plugin source CSV contient une excellente documentation concernant les sélections de configuration. Ils sont inclus ici pour une référence rapide :

  • ‘chemin’ est nécessaire. Il inclut l’emplacement du fichier CSV. La branche 8.x-3.x introduit la prise en charge des wrappers de flux.
  • `ids` est requis. Chaque enregistrement est identifié de manière unique par un tableau de noms de colonnes actuelles.
  • `header_offset` est facultatif. Le nom du champ de chaque enregistrement et l’index d’enregistrement à utiliser comme en-tête CSV. Étant donné que l’index est basé sur zéro, sa valeur par défaut est zéro (« 0 »). S’il n’y a pas de ligne d’en-tête dans un fichier CSV, la valeur doit être définie sur « null ».
  • `champs` est facultatif. Il a un tableau hiérarchique de noms et d’étiquettes qui peuvent remplacer une ligne d’en-tête. S’il est défini, il remplacera les noms de colonne trouvés à partir de « header_offset ».
  • `délimiteur` est facultatif. Il contient un personnage utilisé comme délimiteur de colonne. Il s’agit par défaut d’un virgule (,). Par exemple, si votre fichier utilise onglets comme délimiteur, vous définissez cette configuration sur `\t`.
  • « Enclosure » est facultatif. Il contient un personnage utilisé pour encadrer les valeurs de colonne. Par défaut à guillemets doubles (« ).
  • « escape » est facultatif. Il a un caractère dans les valeurs de colonne qui est utilisé pour l’échappement des caractères. Les barres obliques inverses (/) sont utilisées par défaut.

Exécution de la migration

Utilisons Drush pour exécuter les migrations à l’aide des commandes Migrate Run.

drush mim profile or drush migrate:import profile

Si la commande est exécutée avec succès, vous devriez la voir dans le terminal. Avec cela, la migration est terminée avec succès.

[notice] Traitement de 3 éléments (3 créés, 0 mis à jour, 0 en échec, 0 ignoré) – fait avec ‘profil’

Suivez TO THE NEW sur les réseaux sociaux pour plus de mises à jour.

TROUVÉ CELA UTILE ? PARTAGEZ-LE




Source link