Importa CSV per migrare Drupal 7 to 8 - Una guida completa

Pubblicato: 2020-02-11

Una migrazione da Drupal 7 a 8 è tutt'altro che noiosa perché ci sono tanti modi per eseguire una migrazione! A seconda della complessità del progetto, possiamo scegliere la tecnica più adatta. Quello di cui parleremo in questo blog è la migrazione di contenuto e configurazione da Drupal 7 a Drupal 8 utilizzando un metodo di importazione CSV.

CSV-importatore-drupal

Drupal fornisce vari moduli per l'importazione di dati da diverse fonti come JSON, XML e CSV. Il sistema API di migrazione del core Drupal 8 offre un'intera suite di API in grado di gestire essenzialmente qualsiasi tipo di migrazione da una versione precedente di Drupal a Drupal 8.

Alcuni lavori di preparazione prima della migrazione di Drupal da 7 a 8

Per migrare da Drupal 7 a Drupal 8 utilizzando l'importazione CSV, avremo bisogno di questi moduli.

Drupal 7 Moduli -

  • Visualizzazioni Esportazione dati : questo modulo deve essere installato nel nostro sito Drupal 7. Il modulo di esportazione dei dati delle viste aiuta a esportare i dati in formato CSV.

  • Visualizza campo password : questo modulo aiuta a migrare le password che invieranno le password in formato hash.

Drupal 8 Moduli -

  • Migrazione : il modulo Drupal 8 Migrate aiuta a estrarre dati da varie fonti in Drupa 8.

  • Migrate Plus: questo modulo Drupal 8 aiuterà a manipolare i dati di origine importati

  • Migra Drupal – Questo modulo offre supporto nella migrazione di contenuti e configurazioni a Drupal 8.

  • Migra CSV sorgente: questo modulo offre un plug-in sorgente in grado di migrare entità e contenuto a Drupal 8 da file .csv.

  • Strumenti di migrazione: questo modulo Drupal 8 aiuta offrendo strumenti dell'interfaccia utente/comandi Drush per gestire le migrazioni.

  • Modulo di sviluppo della configurazione : questo modulo aiuta a importare i file di configurazione in Drupal 8.

Che la migrazione di Drupal 8 abbia inizio!

Innanzitutto, dobbiamo creare un modulo personalizzato per la nostra migrazione di Drupal 8 . Chiamiamo questo modulo come test_migrate . E sappiamo che dopo aver creato un modulo personalizzato dobbiamo creare il file info.yml .

csv1

La schermata sopra mostra le chiavi necessarie per info.yml .

Una volta creato il file info.yml , dobbiamo creare un gruppo di migrazione per la migrazione. Questo gruppo di migrazione deve essere creato nel percorso: test_migration > config > install . Il nome del gruppo dovrebbe essere migrate_plus.migration_group.test_migration.yml .

csv2

La schermata sopra mostra la struttura delle cartelle per creare un gruppo di migrazione.

All'interno del file migrate_plus.migration_group.test_migration.yml , dobbiamo scrivere id, label e descrizione per il gruppo di migrazione che è mostrato nello screenshot qui sotto.

csv3

Dopo aver creato il gruppo di migrazione, dobbiamo installare questo gruppo nel nostro file info.yml .

csv

Ora scriveremo uno script di migrazione per Utenti, termine tassonomia, paragrafi, tipi di contenuto. Tieni presente che stai migrando nello stesso ordine poiché ci sarà un collegamento tra queste entità. Ad esempio, il contenuto verrà creato da un particolare utente, quindi dobbiamo prima migrare gli utenti e dopo quella tassonomia, il tipo di contenuto.

Ora scriviamo uno script nel file yaml per la migrazione degli utenti. Quindi, per scrivere la migrazione dell'utente, abbiamo bisogno del file yaml dell'utente con il nome migrate_plus.migration.test_migration_users.yml e lo script per la migrazione è mostrato di seguito.

csv5

Queste sono le chiavi richieste per la migrazione qui file csv di origine che dobbiamo migrare. I file CSV devono essere inseriti nel percorso asset > csv > user.csv . Anche Users.csv è mostrato di seguito.

csv6

csv7

Percorso - Indica il percorso per il file csv.

header_row_count - Questo darà il conteggio delle righe che è l'intestazione di una particolare colonna.

Chiavi - che dovrebbero essere univoche per ogni riga.

Processo - In questo stiamo mappando i file CSV nei campi.

csv8

L'immagine sopra mostra la mappatura tra campi e csv. Qui, il nome è il nome della macchina del campo del nome utente e il titolo è il titolo della colonna CSV. Se abbiamo più dati per un singolo campo, utilizziamo i delimitatori. Gli utenti possono avere più ruoli in quel caso scriviamo come mostrato nell'immagine sopra.

Le immagini vengono migrate scrivendo un plugin personalizzato. Il plugin personalizzato può essere scritto nel percorso src > plugin > migrate > process . Nell'immagine sopra puoi vedere che user_image_import_process è un plugin personalizzato scritto per migrare le immagini degli utenti.

csv9

All'interno di UserImportProcess.php stiamo scrivendo la funzione che copierà l'immagine e la salverà nella destinazione. Lo script è mostrato nell'immagine qui sotto.

csv10

Per identificare dove salvare le immagini scriveremo un'altra funzione ImageImportprocess . In quella funzione menzioneremo il nome della macchina dell'immagine.

csv11

Nel file user info.yml c'è una sezione di destinazione che indicherà dove i dati migrati devono essere archiviati e quale è un'entità. Questo è segnato nell'immagine qui sotto.

csv12

Dopo aver creato il codice per gli utenti, dobbiamo scrivere yaml per i termini della tassonomia. Nota che se hai solo il campo del titolo nella tua tassonomia, non è necessario scrivere un file yaml separato. Se hai più campi in termini di tassonomia, devi scrivere un file yaml separato. In termini di tassonomia avremo tid come chiave poiché tid sarà unico per ogni termine.

csv13

Successivamente migreremo i paragrafi. Per questo abbiamo bisogno di creare un file yaml separato. Il codice da migrare è mostrato nell'immagine sottostante.

csv14

Infine, eseguiamo la migrazione del tipo di contenuto. Il file yaml per il tipo di contenuto è mostrato nel codice seguente.

label : 'Migra i dati del tipo di contenuto dal file csv'

migrazione_gruppo : test_migration

fonte : id : test_migration_content

plugin : csv

# Percorso completo del file.

percorso : 'modules/custom/test_migrate/assets/csv/content.csv'

header_row_count : 1

chiavi :

- nid

processo :

# Aggiunta della mappatura tra i campi e le colonne csv.

titolo : titolo

promuovere : promosso_a_front_page

appiccicoso : appiccicoso

field_display_name : display_name

field_marketing_tagline : marketing_tagline

campo_tassonomia :

plugin : ricerca_entità

fonte : tassonomia

entità_tipo : tassonomia_term

bundle_key : video

bundle : tassonomia

value_key : nome

corpo/valore : corpo

corpo/formato :

plugin : valore_predefinito

default_value : "full_html"

field_paragraph :

- plugin : esplodi

delimitatore : "|"

fonte : fcid

- plugin : skip_on_empty

metodo : processo

- plugin : Migration_lookup

migrazione : test_migration_paragraphs

no_stub : vero

- plugin : iteratore

processo :

target_id : '0'

target_revision_id : '1'

destinazione :

plugin : 'entità:nodo'

default_bundle : contenuto

dipendenze_migrazione :

richiesto :

- test_migration_paragraph

- test_migration_taxonomy

dipendenze : { }

Dopo aver scritto tutti i file YAML la test_migrate.info.yml migrazione conterrà il seguito installazioni.

csv15

Una volta completati tutti questi passaggi, vai al tuo sito e installa il tuo modulo personalizzato.

csv16

Quindi, vai al tuo progetto nel terminale ed esegui questo comando "drush ms" per verificare lo stato della migrazione come mostrato nell'immagine qui sotto.

csv17

Per migrare usa il comando drush mim migrazione-id . Possiamo vedere l'ID di migrazione nell'immagine sopra.

Una volta fatto, se controlli lo stato della migrazione puoi vedere il numero di elementi migrati.

csv18

Ora puoi osservare che tutto il contenuto viene migrato. Se si verifica un errore nella migrazione dei dati, il processo terminerà in quella particolare istanza. Controlla il problema con quel contenuto e poi ancora una volta puoi riavviare la migrazione.

Cose da ricordare

  • Se la migrazione viene terminata durante il processo, lo stato della migrazione verrà visualizzato come "importazione". Per modificare lo stato in inattivo è necessario eseguire il comando drush mrs migrazione-id . Quindi, esegui il comando drush mim migrazione-id

  • Se desideri eseguire il rollback del contenuto migrato, esegui il comando drush mr migrazione-id

  • Se hai modificato qualcosa nel codice dopo aver avviato il processo di migrazione, assicurati di eseguire il comando drush cdi test_migration . Questo comando ti aiuterà a riflettere le modifiche durante la migrazione. Una volta fatto, fai un controllo approfondito sul tuo sito per vedere se tutto il contenuto è stato migrato.