Drupal 8/9'da CSV Dosyasından Veri Taşıma - OSTraining
Yayınlanan: 2022-06-29Bir CSV dosyasından bir Drupal veritabanına veri taşıma işlemi, Drupal'ın entegre Migrate API'si ve üç ekstra özel modül (Migrate Source CSV, Migrate Plus ve Migrate Araçları) aracılığıyla gerçekleştirilebilir.
Bu, ilk adımda verilerin bir kaynaktan getirildiği, ikinci adımda dönüştürüldüğü ve son olarak üçüncü adımda Drupal veritabanındaki hedefine yüklendiği ETL (Ayıkla - Dönüştür - Yükle) işlemi olarak bilinir.
Bu öğretici, bir kütüphane veritabanı için 12 kitap düğümünün oluşturulmasını açıklayacaktır. Nasıl olduğunu öğrenmek için okumaya devam edin!
Adım #1 – Drush ve Gerekli Modülleri Kurun
Drupal'da geçişleri yürütmek için Drush'a ihtiyacımız var. Drush bir Drupal modülü değil, Drupal komutlarını yürütmek için bir komut satırı arayüzüdür. Drush'ın en son sürümünü yüklemek için,
- Sisteminizin terminal uygulamasını açın
- İmleci
/web
dizininin dışına yerleştirin. - Tür:
composer require drush/drush
Bu, Drush'u Drupal kurulumunuzun vendor/bin/drush
dizinine kuracaktır. Ancak, her drush
komutu yürütmek istediğinizde vendor/bin/drush
zahmetlidir.
Drush başlatıcısı, her bir Drupal kurulumunun belirli Drush sürümünü proje bazında yürütmeyi mümkün kılar.
Bu neden mantıklı?
Her projenin farklı gereksinimleri vardır, belirli Drush sürümleri bağımlılık sorunlarından kaçınmaya yardımcı olur. Bazı katkı modülleri, Drush'ın en son sürümüyle düzgün çalışmayabilir.
OSX ve Windows sistemleri için özel talimatlar burada bulunabilir: https://github.com/drush-ops/drush-launcher#installation—phar
Linux sistemi için:
- GitHub'dan drush.phar adlı dosyayı indirmek için aşağıdakini yazın :
wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar
Bu, GitHub'dan drush.phar
adlı dosyayı indirir.
- Dosyayı yürütülebilir hale getirmek için şunu yazın :
chmod +x drush.phar
- Tür :
sudo mv drush.phar /usr/local/bin/ drush
Bu, .phar dosyasını $ PATH'inize taşıyacak ve Drush'u global bir komut olarak çalıştıracaktır.
Şimdi, geçişi gerçekleştirmek için gerekli katkıda bulunan modülleri kurma zamanı.
- Aşağıdakileri yazın :
composer require drupal/migrate_tools composer require drupal/migrate_source_csv
Composer modülleri indirmeyi bitirdiğinde,
- Tarayıcınızda Drupal arka ucunu açın
- Genişlet'i tıklayın
- Migrate , Migrate Plus , Migrate Tools ve Migrate Source CSV'yi etkinleştirin
- Yükle'yi tıklayın
Adım #2 – ETL Süreci Hakkında Daha Fazla Bilgi
Verileri Çıkarma, Dönüştürme ve Yükleme işlemi, geçişi bir .yml dosyasında tanımlayarak ve ardından bir Drush komutuyla yürüterek gerçekleştirilebilir, böylece Drupal veritabanı doğru şekilde doldurulabilir.
Dikkat edilmesi gereken bazı önemli gerçekler var:
- Adımların her biri Drupal eklentileri aracılığıyla gerçekleştirilir.
- İşlemin ilk adımında (kaynak tanımı, yani Extract) yalnızca bir eklenti ve sürecin son adımında (hedef tanımı, yani Yük) bir eklenti kullanmanıza izin verilir.
- Başka bir deyişle, yalnızca bir kaynaktan (CSV dosyası, JSON beslemesi, vb.) veri alabilir ve bunları yalnızca belirli bir varlık paketi altında, örneğin Makale, Sayfa, özel bir içerik türü, bir kullanıcı veya bir Drupal içinde depolayabilirsiniz. yapılandırma varlığı da.
- Verileri, Drupal tarafından beklenen formatla eşleşecek şekilde modellemek için gerektiği kadar eklenti kullanmanıza izin verilir.
- Drupal, varsayılan olarak, tanım dosyasında kullanılabilecek bir kaynak/süreç/hedef eklenti listesine sahiptir.
Tüm kaynak eklentilerin bir listesini görmek için,
- Terminal pencerenizi açın
- Tür :
drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"
Uyarı : Migrate Source CSV modülünü zaten etkinleştirdiğimiz için csv eklentisi orada.
Tüm süreç eklentilerinin bir listesini görmek için,
- Aşağıdakileri yazın :
drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"
Bu liste biraz daha uzun, işlem adımında ihtiyacınız kadar eklenti kullanabileceğinizi unutmayın.
Tüm hedef eklentilerin bir listesini görmek için,
- Aşağıdakileri yazın :
drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"
Adım # 3 – İçerik Türünü Oluşturun
- Yapı > İçerik türleri > İçerik türü ekle'yi tıklayın .
- 'Kitap' içerik türünü oluşturun
- Alanları kaydet ve yönet'e tıklayın
- Alanları oluşturmak için CSV dosyasının başlık satırını kullanın
Edition_number ve editor sütunlarının değerlerini birleştireceğim, bu yüzden bu amaç için veritabanında yalnızca bir alana ihtiyacım var.
Dikkat: alan adlarının (makine adları) CSV dosyasının sütun adlarıyla tam olarak eşleşmesi gerekmez, ancak bunları en azından benzer sözcüklerle ilişkilendirmek mantıklıdır - bu, işlem adımında alan eşlemesini kolaylaştırır.
title
alanı her Drupal düğümü için zorunludur, bu nedenle başlık alanı oluşturmaya gerek yoktur. Gövde alanına dokunmadan bırakabilir veya silebilirsiniz, bu, kendi içerik türünüzle ne yapmayı planladığınıza bağlıdır.
Adım # 4 – Taşıma Tanım Dosyası
Kaynak Adımı
- Tercih ettiğiniz kod düzenleyiciyi açın
- Aşağıdakileri yazın :
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: "'"
Dosyanın kimliği, adıyla eşleşiyor.
Kaynak bölümünde Katkıda Bulunan Kaynak CSV'yi Geçir modülünün csv
eklentisini kullanıyoruz.
header_row_count
seçeneğindeki 1 sayısı, sütun başlıklarının değerini gösterir (hepsi ilk satıra yerleştirilir).
ids
tanımı, CSV dosyasındaki her kayıt için benzersiz tanımlayıcıyı sağlar; bu durumda, integer
türündeki id
sütunu. Modül burada bir dizi beklediği için parantezleri unutmayın.
delimiter
ve enclosure
, CSV dosyasının yapısını ifade eder, benim özel durumumda “;” ile sınırlandırılmıştır. karakterler, dizeler ise “'“ tek tırnak işaretleri arasına alınır.
Ayrıca, bir yolun tanımına dikkat edin. Bu, CSV dosyasını yerleştirmeniz gereken yerdir, böylece Drupal ondan verileri okuyabilir.
- Terminal uygulamanızı açın .
- Tür :
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/
Bu irade:
- Drupal kurulumunuzun ortak klasörünün içinde
csv
adında bir dizin oluşturun. - CSV dosyasının bir kopyasını bu dizine yerleştirin.
- dosyayı sistemdeki herkes için erişilebilir hale getirin (kaynak eklentiyi içerir).
Süreç Adımı
CSV dosyasının sütunlarının her birini içerik türündeki alanlarla eşlediğimiz yer burasıdır:
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
drupal_machine_name: csv_column_name biçimindeki ilk 5 anahtar/değer çifti, CSV kayıtlarını herhangi bir değişiklik yapmadan veritabanı alanlarıyla eşler.
field_editor alanı, 2 dizenin ( editör ve sürüm_numarası sütunları içindeki değerler) birleştirilmesinin gerçekleştirilmesinin sonucu olacaktır.
Sınırlayıcı seçeneği, her iki dize arasında bir sınırlayıcı, bu durumda bir boşluk ayarlamayı mümkün kılar.
default_value eklentisi, bu bilgi kaynak verilerde bulunmadığından bir varlık türü tanımlamamıza yardımcı olur.
Hedef Adım
Bu sürecin son kısmı ise varış aşamasıdır.
destination: plugin: entity:node
İçeriği taşıyoruz ve her kayıt bir düğüm olacak.
Adım # 5 – Taşımayı Gerçekleştirin
- Yapılandırma > Yapılandırma senkronizasyonu > İçe Aktar > Tek öğe'ye tıklayın
- Açılır menüden Taşıma'yı seçin
- .yml dosyasındaki kodu textarea'ya yapıştırın
- İçe Aktar'ı tıklayın
- Yapılandırmayı senkronize etmek için Onayla'ya tıklayın . “Yapılandırma başarıyla içe aktarıldı” mesajını alacaksınız.
- Terminal uygulamasına geçin .
- Aşağıdakileri yazın :
drush migrate:import my_first_migration
Artık sitenizdeki içeriği kontrol edebilirsiniz.
Bir CSV dosyasından Drupal 8/9'a veri taşımanın temel ilkelerini öğrendiniz.
Daha önce de görmüş olduğunuz gibi, taşıma işlemi ayrıntılara dikkat etmeyi gerektirir, bu nedenle önce bir hazırlama sunucusunda çalıştığınızdan emin olun çünkü küçük bir hata tüm siteyi bozabilir. Umarım bu öğreticiyi beğenmişsinizdir.
Okuduğunuz için teşekkürler!