Importa CSV per migrare Drupal 7 to 8 - Una guida completa
Pubblicato: 2020-02-11Una 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.

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 .

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 .

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.

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

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.

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.


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.

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.

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.

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

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.

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.

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

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.

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

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.

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.

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.
