Migrasi Data dari File CSV di Drupal 8/9
Diterbitkan: 2022-02-16Proses migrasi data ke dalam database Drupal dari file CSV dapat dilakukan melalui Migrate API terintegrasi Drupal dan tiga modul kustom tambahan (Migrate Source CSV, Migrate Plus, dan Migrate Tools).
Ini dikenal sebagai proses ETL (Extract - Transform - Load), di mana data diambil dari satu sumber pada langkah pertama, diubah pada langkah kedua, dan akhirnya dimuat ke tujuannya di database Drupal pada langkah ketiga.
Tutorial ini akan menjelaskan pembuatan 12 node buku untuk database perpustakaan. Teruslah membaca untuk mempelajari caranya!
Langkah #1 - Instal Drush dan Modul yang Diperlukan
Untuk menjalankan migrasi di Drupal, kita membutuhkan Drush. Drush bukan modul Drupal, tetapi antarmuka baris perintah untuk menjalankan perintah Drupal. Untuk menginstal versi terbaru Drush,
- Buka aplikasi terminal sistem Anda
- Tempatkan kursor di luar direktori /web .
- Jenis: komposer membutuhkan drush/drush
Ini akan menginstal Drush di dalam direktori vendor/bin/drush dari instalasi Drupal Anda. Namun, sulit untuk mengetik vendor/bin/drush alih-alih drush , setiap kali Anda ingin menjalankan perintah drush.
Peluncur Drush memungkinkan untuk menjalankan versi khusus Drush dari setiap instalasi Drupal pada basis per proyek.
Mengapa ini masuk akal?
Setiap proyek memiliki persyaratan yang berbeda, versi Drush tertentu membantu menghindari masalah ketergantungan. Beberapa modul kontribusi mungkin tidak berfungsi dengan baik dengan versi terbaru Drush.
Instruksi khusus untuk sistem OSX dan Windows dapat ditemukan di sini: https://github.com/drush-ops/drush-launcher#installation---phar
Untuk sistem Linux:
- Ketik berikut ini untuk mengunduh file bernama drush.phar dari GitHub:
wget -O drush.phar
https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar
- Ketik yang berikut untuk membuat file dapat dieksekusi: chmod +x drush.phar
- Ketik berikut ini untuk memindahkan file .phar ke $PATH Anda dan jalankan Drush sebagai perintah global: sudo mv drush.phar /usr/local/bin/ drush
Sekarang saatnya untuk menginstal modul kontribusi yang diperlukan untuk melakukan migrasi.
- Ketik berikut ini:
composer require drupal/migrate_tools
composer require drupal/migrate_source_csv
Setelah Komposer selesai mengunduh modul,
- Buka backend Drupal di browser Anda
- Klik Perpanjang
- Aktifkan Migrasi , Migrasi Plus , Migrasi Alat , dan Migrasi Sumber CSV
- Klik Instal
Langkah #2 - Selengkapnya Tentang Proses ETL
Proses Mengekstrak, Mengubah, dan Memuat data dapat dicapai dengan menentukan migrasi dalam file .yml, lalu menjalankannya dengan perintah Drush, sehingga database Drupal dapat diisi dengan benar.
Ada beberapa fakta penting yang perlu diperhatikan:
- Setiap langkah dilakukan melalui plugin Drupal.
- Anda hanya diperbolehkan menggunakan satu plugin Pada langkah pertama (definisi sumber yaitu Ekstrak) dan satu plugin pada langkah terakhir (definisi tujuan, yaitu Load) dari proses.
- Dengan kata lain, Anda hanya dapat mengambil data dari satu sumber (file CSV, umpan JSON, dll) dan menyimpannya di Drupal hanya di bawah bundel entitas tertentu, misalnya, Artikel, Halaman, jenis konten khusus, pengguna, atau entitas konfigurasi, juga.
- Anda diperbolehkan menggunakan plugin sebanyak yang diperlukan untuk memodelkan data sehingga cocok dengan format yang diharapkan oleh Drupal.
- Drupal secara default memiliki daftar plugin sumber/proses/tujuan yang dapat digunakan dalam file definisi.
Untuk melihat daftar semua plugin sumber,
- Buka jendela terminal Anda.
- Ketik berikut ini:
drush ev
"print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"
Daftar itu sedikit lebih panjang, ingatlah bahwa Anda dapat menggunakan plugin sebanyak yang Anda butuhkan dalam langkah proses.
Untuk melihat daftar semua plugin tujuan,
- Jenis :
drush ev
"print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"
Perhatikan : plugin csv ada karena kita telah mengaktifkan modul Migrate Source CSV.
Untuk melihat daftar semua plugin proses,
- Ketik berikut ini:
drush ev
"print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"
Daftar itu sedikit lebih panjang, ingatlah bahwa Anda dapat menggunakan plugin sebanyak yang Anda butuhkan dalam langkah proses.
Untuk melihat daftar semua plugin tujuan,
- Ketik berikut ini:
drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"

Langkah # 3 - Buat Jenis Konten
- Klik Struktur > Jenis konten > Tambahkan Jenis konten
- Buat jenis konten 'Buku'
- Klik Simpan dan kelola bidang
- Gunakan baris judul file CSV untuk membuat bidang
Saya akan menggabungkan nilai kolom edition_number dan editor, jadi saya hanya perlu satu bidang dalam database untuk tujuan ini.
Perhatikan: nama bidang (nama mesin) tidak harus sama persis dengan nama kolom file CSV, namun masuk akal, setidaknya menghubungkannya dengan kata yang serupa - yang memudahkan pemetaan bidang dalam langkah proses.
Bidang judul wajib untuk setiap simpul Drupal, jadi tidak perlu membuat bidang judul. Anda dapat membiarkan bidang isi tidak tersentuh atau Anda dapat menghapusnya, itu tergantung pada apa yang Anda rencanakan untuk dilakukan dengan jenis konten khusus Anda.
Langkah # 4 - File Definisi Migrasi
Langkah Sumber
- Buka editor kode pilihan Anda
- Ketik berikut ini:
id: my_first_migration
label: Migrate terms from a CSV source
source:
plugin: csv
path: public://csv/library.csv
header_row_count: 1
ids:
[id]
delimiter: ';'
enclosure: "'"
Id file sesuai dengan namanya.
Kami menggunakan plugin csv dari modul contrib Migrate Source CSV di bagian source.
Angka 1 pada opsi header_row_count menunjukkan nilai judul kolom (semuanya ditempatkan pada baris pertama).
Definisi id memberikan pengidentifikasi unik untuk setiap catatan pada file CSV, dalam hal ini, kolom id , yang bertipe integer . Jangan lupa tanda kurung, karena modul mengharapkan array di sini.
pembatas dan penutup mengacu pada struktur file CSV, dalam kasus khusus saya, ini dibatasi oleh ";" karakter, sedangkan string diapit di antara "'" tanda kutip tunggal.
Perhatikan juga, definisi jalan. Di situlah Anda harus meletakkan file CSV, sehingga Drupal dapat membaca data darinya.
- Buka aplikasi terminal Anda.
- Jenis :
mkdir web/sites/default/files/csv
cp /home/path/to/library.csv web/sites/default/files/csv/
chmod -R 777 web/sites/default/files/csv/
Ini akan:
- buat direktori bernama csv di dalam folder publik instalasi Drupal Anda.
- tempatkan salinan file CSV di dalam direktori itu.
- buat file dapat diakses oleh semua orang di sistem (termasuk plugin sumber).
Langkah Proses
Di sinilah kami memetakan masing-masing kolom file CSV dengan bidang di tipe konten:
process:
title: title
field_id: id
field_author: author
field_location: location
field_availability: availability
field_editor:
plugin: concat
source:
- editor
- edition_number
delimiter: ' '
type:
plugin: default_value
default_value: book
Bidang field_editor akan menjadi hasil dari melakukan penggabungan 2 string (nilai di dalam editor dan kolom nomor_edisi ).
5 pasangan kunci/nilai pertama dalam bentuk drupal_machine_name: csv_column_name memetakan catatan CSV ke bidang database tanpa melakukan perubahan apa pun.
Opsi pembatas memungkinkan untuk mengatur pembatas antara kedua string, dalam hal ini, ruang kosong.
Plugin default_value membantu kita menentukan tipe entitas karena informasi ini tidak tersedia di data sumber.
Langkah Tujuan
Bagian terakhir dari proses ini adalah langkah tujuan.
destination:
plugin: entity:node
Kami memigrasikan konten dan setiap record akan menjadi node.
Langkah # 5 - Jalankan Migrasi
- Klik Konfigurasi > Sinkronisasi konfigurasi > Impor > Item tunggal
- Pilih Migrasi dari dropdown
- Tempel kode dari file .yml ke dalam textarea
- Klik Impor
- Klik Konfirmasi untuk menyinkronkan konfigurasi. Anda akan mendapatkan pesan "Konfigurasi berhasil diimpor"
- Ubah ke aplikasi terminal.
- Ketik berikut ini:
drush migrate:import my_first_migration
Anda sekarang dapat memeriksa konten di situs Anda.
Anda telah mempelajari prinsip dasar migrasi data dari file CSV ke Drupal 8/9.
Seperti yang telah Anda lihat, proses migrasi memerlukan perhatian pada detailnya, jadi pastikan Anda bekerja terlebih dahulu di server staging karena satu kesalahan kecil dapat merusak seluruh situs. Saya harap Anda menyukai tutorial ini.
Terima kasih sudah membaca!