Migrasi Data dari File CSV di Drupal 9/8 - OSTPelatihan
Diterbitkan: 2022-06-29Proses 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 pada 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:
composer require 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.
Petunjuk 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
Ini mengunduh file bernama drush.phar
dari GitHub.
- Ketik yang berikut untuk membuat file dapat dieksekusi:
chmod +x drush.phar
- Ketik :
sudo mv drush.phar /usr/local/bin/ drush
Itu akan memindahkan file .phar ke $PATH Anda dan menjalankan Drush sebagai perintah global.
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 – Lebih Lanjut 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
- Jenis :
drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->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 title
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 ids
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.
delimiter
dan enclosure
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
5 pasangan kunci/nilai pertama dalam bentuk drupal_machine_name: csv_column_name memetakan catatan CSV ke bidang database tanpa melakukan perubahan apa pun.
Bidang field_editor akan menjadi hasil dari melakukan penggabungan 2 string (nilai di dalam editor dan kolom nomor_edisi ).
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 terhadap detail, 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!