Impor CSV untuk Memigrasi Drupal 7 ke 8 - Panduan lengkap
Diterbitkan: 2020-02-11Migrasi Drupal 7 hingga 8 sama sekali tidak membosankan karena ada begitu banyak cara untuk melakukan migrasi! Tergantung pada kerumitan proyek, kita dapat memilih teknik yang paling sesuai. Yang akan kita bahas di blog ini adalah memigrasikan konten dan konfigurasi dari Drupal 7 ke Drupal 8 menggunakan metode impor CSV.

Drupal menyediakan berbagai modul untuk mengimpor data dari berbagai sumber seperti JSON, XML dan CSV. Sistem API migrasi inti Drupal 8 menawarkan seluruh rangkaian API yang pada dasarnya dapat menangani segala jenis migrasi dari versi Drupal sebelumnya ke Drupal 8.
Beberapa persiapan Bekerja sebelum migrasi Drupal 7 hingga 8
Untuk bermigrasi dari Drupal 7 ke Drupal 8 menggunakan impor CSV, kita memerlukan modul-modul ini.
Drupal 7 Modul -
Tampilan Ekspor data : Modul ini perlu diinstal di situs Drupal 7 kami. Modul ekspor Data Tampilan membantu dalam mengekspor data dalam format CSV.
Views Password Field : Modul ini membantu untuk memigrasi password yang akan mengirimkan password dalam format hash.
Modul Drupal 8 -
Migrate – Modul Drupal 8 Migrate membantu mengekstraksi data dari berbagai sumber ke Drupa 8.
Migrate Plus – Modul Drupal 8 ini akan membantu memanipulasi sumber data yang diimpor
Migrasi Drupal – Modul ini menawarkan dukungan dalam memigrasikan konten dan konfigurasi ke Drupal 8.
Migrate source CSV – Modul ini menawarkan plugin sumber yang dapat memigrasikan entitas dan konten ke Drupal 8 dari file .csv.
Alat Migrasi – Modul Drupal 8 ini membantu dengan menawarkan alat UI/perintah Drush untuk mengelola migrasi.
Modul Pengembangan Konfigurasi – Modul ini membantu dalam mengimpor file konfigurasi ke Drupal 8.
Biarkan migrasi Drupal 8 dimulai!
Pertama, kita perlu membuat modul khusus untuk migrasi Drupal 8 kita . Beri nama modul ini sebagai test_migrate . Dan kita tahu bahwa setelah membuat modul khusus, kita perlu membuat file info.yml .

Tangkapan layar di atas menunjukkan kunci yang diperlukan untuk info.yml .
Setelah file info.yml dibuat, kita perlu membuat grup migrasi untuk migrasi. Grup migrasi ini perlu dibuat di jalur: test_migration > config > install . Nama grup harus migration_plus.migration_group.test_migration.yml .

Tangkapan layar di atas menunjukkan struktur folder untuk membuat grup migrasi.
Di dalam file migrasi_plus.migration_group.test_migration.yml , kita perlu menulis id, label, dan deskripsi untuk grup migrasi yang ditunjukkan pada tangkapan layar di bawah.

Setelah membuat grup migrasi, kami perlu menginstal grup ini di file info.yml kami .

Sekarang, kita akan menulis skrip migrasi untuk Users, Taxonomy term, Paragraphs, Content types. Perhatikan bahwa Anda bermigrasi dalam urutan yang sama karena akan ada tautan di antara entitas ini. Misalnya, konten akan dibuat oleh pengguna tertentu - jadi pertama-tama kita harus memigrasikan pengguna dan setelah itu taksonomi, tipe konten.
Sekarang mari kita menulis skrip dalam file yaml untuk migrasi pengguna. Jadi, untuk menulis migrasi pengguna, kita memerlukan file yaml pengguna dengan nama migration_plus.migration.test_migration_users.yml dan skrip untuk migrasi ditunjukkan di bawah ini.

Ini adalah kunci yang diperlukan untuk migrasi di sini sumber file csv yang perlu kita migrasi. File csv harus ditempatkan di aset jalur > csv > user.csv . Users.csv juga ditampilkan di bawah ini.


Path - Ini menunjukkan path untuk file csv.
header_row_count - Ini akan memberikan jumlah baris yang merupakan header kolom tertentu.
Kunci - yang harus unik untuk setiap baris.
Proses - Dalam hal ini kami memetakan file csv ke bidang.

Gambar di atas menunjukkan pemetaan antara bidang dan csv. Di sini, nama adalah nama mesin dari bidang nama pengguna dan judul adalah judul kolom csv. Jika kami memiliki banyak data untuk satu bidang, maka kami menggunakan pembatas. Pengguna mungkin memiliki beberapa peran dalam hal ini kami menulis seperti yang ditunjukkan pada gambar di atas.
Gambar dimigrasikan dengan menulis plugin khusus. Plugin khusus dapat ditulis di jalur src > plugin > migrasi > proses . Pada gambar di atas Anda dapat melihat bahwa user_image_import_process adalah plugin khusus yang ditulis untuk memigrasikan gambar pengguna.

Di dalam UserImportProcess.php kita menulis fungsi yang akan menyalin gambar dan menyimpannya ke tujuan. Script ditunjukkan pada gambar di bawah ini.

Untuk mengidentifikasi di mana gambar harus disimpan, kami akan menulis satu lagi fungsi ImageImportprocess . Dalam fungsi tersebut kita akan menyebutkan nama mesin dari image tersebut.

Di file info.yml pengguna ada bagian tujuan yang akan menunjukkan di mana data yang dimigrasi akan disimpan dan mana yang merupakan entitas. Ini ditandai pada gambar di bawah ini.

Setelah membuat kode untuk pengguna, kita perlu menulis yaml untuk istilah taksonomi. Perhatikan bahwa jika Anda hanya memiliki bidang judul dalam taksonomi Anda, maka Anda tidak perlu menulis file yaml terpisah. Jika Anda memiliki beberapa bidang dalam istilah taksonomi, maka Anda perlu menulis file yaml terpisah. Dalam istilah taksonomi kita akan memiliki tid sebagai kunci karena tid akan unik untuk setiap istilah.

Setelah ini kita akan memigrasikan paragraf. Untuk itu kita perlu membuat file yaml tersendiri. Kode untuk bermigrasi ditunjukkan pada gambar di bawah ini.

Terakhir, mari migrasikan tipe kontennya. File yaml untuk tipe konten ditunjukkan pada kode di bawah ini.
label : 'Migrasikan data tipe konten dari file csv'
migration_group: test_migration
sumber : id : test_migration_content

plugin : csv
# Jalur lengkap ke file.
jalur : 'modules/custom/test_migrate/assets/csv/content.csv'
header_row_count : 1
kunci :
- nid
proses :
# Menambahkan pemetaan antara bidang dan kolom csv.
judul : judul
promosikan : promote_to_front_page
lengket : lengket
field_display_name : nama_tampilan
field_marketing_tagline : marketing_tagline
bidang_taksonomi :
plugin : entity_lookup
sumber : Taksonomi
entity_type : taksonomi_term
bundle_key : vid
bundel : taksonomi
nilai_key : nama
tubuh/nilai : tubuh
tubuh/bentuk :
plugin : default_value
default_value : "full_html"
field_paragraph :
- plugin : meledak
pembatas : "|"
sumber : fcid
- plugin : skip_on_empty
cara : proses
- plugin : migrasi_lookup
migrasi : test_migration_paragraphs
no_stub : benar
- plugin : iterator
proses :
target_id : '0'
target_revisi_id : '1'
tujuan :
plugin : 'entitas: simpul'
default_bundle : konten
migrasi_dependensi :
diperlukan :
- tes_migrasi_paragraf
- tes_migrasi_taksonomi
ketergantungan : {}
Setelah menulis semua file yaml, migrasi test_migrate.info.yml akan berisi instalasi di bawah ini.

Setelah Anda menyelesaikan semua langkah ini, buka situs Anda dan instal modul khusus Anda.

Selanjutnya, buka proyek Anda di terminal dan jalankan perintah "drush ms" ini untuk memeriksa status migrasi seperti yang ditunjukkan pada gambar di bawah ini.

Untuk bermigrasi gunakan perintah drush mim migration-id . Kita dapat melihat ID migrasi pada gambar di atas.
Setelah selesai, jika Anda memeriksa status migrasi, Anda dapat melihat jumlah item yang dimigrasikan.

Sekarang Anda dapat mengamati bahwa semua konten dimigrasikan. Jika ada kesalahan dalam migrasi data, proses akan dihentikan pada saat tertentu. Periksa masalah dengan konten itu dan sekali lagi Anda dapat memulai ulang migrasi.
Hal-hal untuk diingat
Jika migrasi dihentikan di antara proses, status migrasi akan ditampilkan sebagai "mengimpor". Untuk mengubah status menjadi idle, Anda perlu menjalankan perintah drush mrs migration-id . Selanjutnya, jalankan perintah drush mim migration-id
Jika Anda ingin mengembalikan konten yang dimigrasikan, jalankan perintah drush mr migration-id
Jika Anda telah mengubah sesuatu dalam kode setelah memulai proses migrasi, maka pastikan Anda menjalankan perintah drush cdi test_migration . Perintah ini akan membantu Anda untuk mencerminkan perubahan saat bermigrasi. Setelah selesai, lakukan pemeriksaan menyeluruh di situs Anda untuk melihat apakah semua konten telah dimigrasikan.
