Import CSV pentru a migra Drupal 7 la 8 - Un ghid complet
Publicat: 2020-02-11O migrare Drupal 7 la 8 este deloc plictisitoare, deoarece există atât de multe moduri de a efectua o migrare! În funcție de complexitatea proiectului, putem alege o tehnică care i se potrivește cel mai bine. Cea despre care vom discuta în acest blog este migrarea conținutului și configurației de la Drupal 7 la Drupal 8 folosind o metodă de import CSV.

Drupal oferă diverse module pentru importarea datelor din diferite surse precum JSON, XML și CSV. Sistemul API de migrare de bază Drupal 8 oferă o suită întreagă de API-uri care pot gestiona, în esență, orice tip de migrare de la o versiune anterioară a Drupal la Drupal 8.
Câteva lucrări de pregătire înainte de migrarea Drupal 7 la 8
Pentru a migra de la Drupal 7 la Drupal 8 folosind importul CSV, vom avea nevoie de aceste module.
Drupal 7 module -
Vizualizări Export de date : Acest modul trebuie să fie instalat pe site-ul nostru Drupal 7. Modulul de export de date vizualizări ajută la exportul datelor în format CSV.
Vizualizări câmpul parolei : Acest modul ajută la migrarea parolelor care vor trimite parolele în format hashed.
Drupal 8 module -
Migrare – Modulul Drupal 8 Migrate ajută la extragerea datelor din diverse surse către Drupa 8.
Migrate Plus – Acest modul Drupal 8 va ajuta la manipularea datelor sursă importate
Migrați Drupal – Acest modul oferă suport pentru migrarea conținutului și a configurațiilor către Drupal 8.
Migrare sursă CSV – Acest modul oferă un plugin sursă care poate migra entități și conținut la Drupal 8 din fișiere .csv.
Instrumente de migrare – Acest modul Drupal 8 ajută oferind instrumente UI/comenzi Drush pentru a gestiona migrațiile.
Modul de dezvoltare a configurației – Acest modul ajută la importarea fișierelor de configurare în Drupal 8.
Să înceapă migrația Drupal 8!
În primul rând, trebuie să creăm un modul personalizat pentru migrarea noastră Drupal 8 . Să numim acest modul ca test_migrate . Și știm că după crearea unui modul personalizat trebuie să creăm fișierul info.yml .

Captura de ecran de mai sus arată cheile necesare pentru info.yml .
Odată ce fișierul info.yml este creat, trebuie să creăm un grup de migrare pentru migrare. Acest grup de migrare trebuie creat în calea: test_migration > config > install . Numele grupului trebuie să fie migrate_plus.migration_group.test_migration.yml .

Captura de ecran de mai sus arată structura folderului pentru a crea un grup de migrare.
În interiorul fișierului migrate_plus.migration_group.test_migration.yml , trebuie să scriem id-ul, eticheta și descrierea grupului de migrare, care este afișat în captura de ecran de mai jos.

După crearea grupului de migrare, trebuie să instalăm acest grup în fișierul nostru info.yml .

Acum, vom scrie un script de migrare pentru Utilizatori, termen de taxonomie, Paragrafe, tipuri de conținut. Rețineți că migrați în aceeași ordine, deoarece va exista o legătură între aceste entități. De exemplu, conținutul va fi creat de un anumit utilizator - așa că mai întâi trebuie să migrăm utilizatorii și după acea taxonomie, tipul de conținut.
Acum să scriem un script în fișierul yaml pentru migrarea utilizatorilor. Deci, pentru a scrie migrarea utilizatorului, avem nevoie de fișierul user yaml cu numele migrate_plus.migration.test_migration_users.yml iar scriptul pentru migrare este prezentat mai jos.

Acestea sunt cheile necesare pentru migrarea aici fișierul csv sursă pe care trebuie să îl migram. Fișierele Csv trebuie plasate în calea assets > csv > user.csv . Users.csv este, de asemenea, afișat mai jos.


Cale - Indică calea pentru fișierul csv.
header_row_count - Aceasta va oferi numărul de rânduri, care este antetul unei anumite coloane.
Chei - care ar trebui să fie unice pentru fiecare rând.
Proces - În aceasta mapam fișierele csv la câmpuri.

Imaginea de mai sus arată maparea dintre câmpuri și csv. Aici, numele este numele mașinii câmpului de nume de utilizator, iar titlul este titlul coloanei csv. Dacă avem mai multe date pentru un singur câmp, atunci folosim delimitatori. Utilizatorii pot avea mai multe roluri în acest caz, scriem așa cum se arată în imaginea de mai sus.
Imaginile sunt migrate prin scrierea unui plugin personalizat. Pluginul personalizat poate fi scris în calea src > plugin > migrate > process . În imaginea de mai sus puteți vedea că user_image_import_process este un plugin personalizat scris pentru a migra imaginile utilizatorului.

În UserImportProcess.php scriem funcția care va copia imaginea și o va salva la destinație. Scriptul este prezentat în imaginea de mai jos.

Pentru a identifica unde trebuie salvate imaginile, vom scrie încă o funcție ImageImportprocess . În acea funcție vom menționa numele mașinii imaginii.

În fișierul info.yml utilizatorilor există o secțiune de destinație care va indica unde urmează să fie stocate datele migrate și care este o entitate. Acest lucru este marcat în imaginea de mai jos.

După crearea codului pentru utilizatori, trebuie să scriem yaml pentru termenii taxonomiei. Rețineți că, dacă aveți doar câmpul de titlu în taxonomia dvs., atunci nu este necesar să scrieți un fișier yaml separat. Dacă aveți mai multe câmpuri în termenul de taxonomie, atunci trebuie să scrieți un fișier yaml separat. În termeni de taxonomie, vom avea tid ca cheie, deoarece tid va fi unic pentru fiecare termen.

După aceasta vom migra paragrafele. Pentru asta trebuie să creăm un fișier yaml separat. Codul de migrat este afișat în imaginea de mai jos.

În cele din urmă, să migrăm tipul de conținut. Fișierul yaml pentru tipul de conținut este afișat în codul de mai jos.
label : „Migrați datele tipului de conținut din fișierul csv”
migration_group : migrare_test
sursă : id : test_migration_content

plugin : csv
# Calea completă către fișier.
cale : „modules/custom/test_migrate/assets/csv/content.csv”
header_row_count : 1
chei :
- nid
proces :
# Adăugarea mapării între câmpuri și coloanele csv.
titlu : titlu
promovează : promovat_în_față_pagină
lipicios : lipicios
field_display_name : nume_afisat
field_marketing_tagline : tagline_marketing
field_taxonomy :
plugin : entity_lookup
sursa : Taxonomie
entity_type : taxonomy_term
bundle_key : vid
bundle : taxonomie
value_key : nume
corp/valoare : corp
corp/format :
plugin : default_value
default_value : „full_html”
field_paragraph :
- plugin : exploda
delimitator : "|"
sursa : fcid
- plugin : skip_on_empty
metoda : proces
- plugin : migration_lookup
migrare : test_migration_paragraphs
no_stub : adevărat
- plugin : iterator
proces :
target_id : „0”
target_revision_id : „1”
destinatie :
plugin : 'entity:node'
default_bundle : conținut
dependențe_migrație :
necesar :
- test_migration_paragraph
- test_migration_taxonomie
dependențe : { }
După scrierea tuturor fișierelor yaml, migrarea test_migrate.info.yml va conține instalările de mai jos.

După ce ați terminat toți acești pași, accesați site-ul dvs. și instalați modulul personalizat.

Apoi, accesați proiectul dvs. în terminal și rulați această comandă „drush ms” pentru a verifica starea migrației, așa cum se arată în imaginea de mai jos.

Pentru a migra, utilizați comanda drush mim migration-id . Putem vedea ID-ul de migrare în imaginea de mai sus.
Odată terminat, dacă verificați starea migrației, puteți vedea numărul de articole migrate.

Acum puteți observa că tot conținutul este migrat. Dacă există vreo eroare în migrarea datelor, procesul se va încheia în acea instanță. Verificați problema cu acel conținut și apoi încă o dată puteți reporni migrarea.
Lucruri de amintit
Dacă migrarea se încheie între proces, starea migrării se va afișa ca „import”. Pentru a schimba starea la inactiv, trebuie să rulați comanda drush mrs migration-id . Apoi, executați comanda drush mim migration-id
Dacă doriți să returnați conținutul migrat, executați comanda drush mr migration-id
Dacă ați schimbat ceva în cod după ce ați început procesul de migrare, asigurați-vă că executați comanda drush cdi test_migration . Această comandă vă va ajuta să reflectați modificările în timpul migrării. După ce ați terminat, verificați amănunțit site-ul dvs. pentru a vedea dacă tot conținutul este migrat.
