Import CSV pentru a migra Drupal 7 la 8 - Un ghid complet

Publicat: 2020-02-11

O 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.

CSV-importator-drupal

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 .

csv1

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 .

csv2

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.

csv3

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

csv

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.

csv5

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.

csv6

csv7

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.

csv8

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.

csv9

Î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.

csv10

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.

csv11

Î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.

csv12

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.

csv13

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.

csv14

Î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.

csv15

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

csv16

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.

csv17

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.

csv18

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.