ترحيل البيانات من ملف CSV في دروبال 8/9
نشرت: 2022-02-16يمكن تنفيذ عملية ترحيل البيانات إلى قاعدة بيانات دروبال من ملف CSV من خلال برنامج Migrate API المتكامل من Drupal وثلاث وحدات مخصصة إضافية (Migrate Source CSV و Migrate Plus و Migrate Tools).
يُعرف هذا باسم عملية ETL (استخراج - تحويل - تحميل) ، حيث يتم جلب البيانات من مصدر واحد في الخطوة الأولى ، وتحويلها في الخطوة الثانية ، وتحميلها أخيرًا إلى وجهتها على قاعدة بيانات دروبال في الخطوة الثالثة.
سيشرح هذا البرنامج التعليمي إنشاء 12 عقدة كتابية لقاعدة بيانات مكتبة. استمر في القراءة لتتعلم كيف!
الخطوة # 1 - تثبيت Drush والوحدات النمطية المطلوبة
لتنفيذ عمليات الترحيل في دروبال ، نحتاج إلى دروش. Drush ليس وحدة دروبال ، ولكنه واجهة سطر أوامر لتنفيذ أوامر دروبال. لتثبيت أحدث إصدار من Drush ،
- افتح التطبيق الطرفي لنظامك
- ضع المؤشر خارج دليل الويب / .
- النوع: يتطلب الملحن drush / drush
سيؤدي هذا إلى تثبيت Drush داخل دليل البائع / bin / drush الخاص بتثبيت دروبال. ومع ذلك ، فإنه من المرهق كتابة vendor / bin / drush بدلاً من drush ، في كل مرة تريد فيها تنفيذ أمر drush.
يتيح برنامج Drush Launcher إمكانية تنفيذ إصدار Drush المحدد لكل تثبيت دروبال على أساس كل مشروع.
لماذا يكون لهذا معنى؟
لكل مشروع متطلبات مختلفة ، تساعد إصدارات Drush المحددة على تجنب مشكلات التبعية. قد لا تعمل بعض الوحدات النمطية للمساهمات بشكل صحيح مع أحدث إصدار من Drush.
يمكن العثور على الإرشادات المحددة لأنظمة OSX و Windows هنا: https://github.com/drush-ops/drush-launcher#installation---phar
بالنسبة لنظام Linux:
- اكتب ما يلي لتنزيل الملف المسمى drush.phar من GitHub:
wget -O drush.phar
https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar
- اكتب ما يلي لجعل الملف قابلاً للتنفيذ: chmod + x drush.phar
- اكتب ما يلي لنقل ملف .phar إلى $ PATH وتشغيل Drush كأمر عام: sudo mv drush.phar / usr / local / bin / drush
حان الوقت الآن لتثبيت الوحدات النمطية المطلوبة لإجراء الترحيل.
- اكتب ما يلي:
composer require drupal/migrate_tools
composer require drupal/migrate_source_csv
بمجرد انتهاء Composer من تنزيل الوحدات ،
- افتح خلفية دروبال في متصفحك
- انقر فوق "تمديد"
- قم بتمكين الترحيل والترحيل الإضافي وترحيل الأدوات وترحيل المصدر بتنسيق CSV
- انقر فوق تثبيت
الخطوة # 2 - المزيد حول عملية ETL
يمكن تحقيق عملية استخراج البيانات وتحويلها وتحميلها عن طريق تحديد الترحيل في ملف .yml ، ثم تنفيذه باستخدام أمر Drush ، بحيث يمكن ملء قاعدة بيانات دروبال بشكل صحيح.
هناك بعض الحقائق المهمة التي يجب ملاحظتها:
- يتم تنفيذ كل خطوة من خلال مكونات دروبال الإضافية.
- يُسمح لك فقط باستخدام مكون إضافي واحد في الخطوة الأولى (تعريف المصدر ، أي استخراج) ومكوِّن إضافي واحد في الخطوة الأخيرة (تعريف الوجهة ، أي تحميل) من العملية.
- بمعنى آخر ، لا يمكنك جلب البيانات إلا من مصدر واحد (ملف CSV أو موجز JSON وما إلى ذلك) وتخزينها في Drupal فقط ضمن حزمة كيان معينة ، على سبيل المثال ، مقالة أو صفحة أو نوع محتوى مخصص أو مستخدم أو كيان التكوين ، كذلك.
- يُسمح لك باستخدام العديد من الملحقات حسب الضرورة لنمذجة البيانات بحيث تتطابق مع التنسيق الذي يتوقعه دروبال.
- يحتوي دروبال افتراضيًا على قائمة بالمكونات الإضافية للمصدر / العملية / الوجهة التي يمكن استخدامها داخل ملف التعريف.
لمشاهدة قائمة بجميع المكونات الإضافية المصدر ،
- افتح نافذة المحطة الطرفية.
- اكتب ما يلي:
drush ev
"print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"
هذه القائمة أطول قليلاً ، تذكر أنه يمكنك استخدام العديد من المكونات الإضافية التي تحتاجها في خطوة العملية.
لمشاهدة قائمة بجميع المكونات الإضافية للوجهة ،
- نوع :
drush ev
"print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"
ملاحظة : المكون الإضافي csv موجود لأننا قمنا بالفعل بتمكين وحدة ترحيل المصدر CSV.
للاطلاع على قائمة بجميع المكونات الإضافية للعملية ،
- اكتب ما يلي:
drush ev
"print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"
هذه القائمة أطول قليلاً ، تذكر أنه يمكنك استخدام العديد من المكونات الإضافية التي تحتاجها في خطوة العملية.
لمشاهدة قائمة بجميع المكونات الإضافية للوجهة ،
- اكتب ما يلي:
drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"

الخطوة # 3 - أنشئ نوع المحتوى
- انقر فوق الهيكل> أنواع المحتوى> إضافة نوع المحتوى
- قم بإنشاء نوع محتوى "الكتاب"
- انقر فوق حفظ وإدارة الحقول
- استخدم صف العنوان لملف CSV لإنشاء الحقول
سأقوم بتسلسل قيم رقم إصدار الأعمدة والمحرر ، لذلك أنا بحاجة إلى حقل واحد فقط في قاعدة البيانات لهذا الغرض.
ملاحظة: لا يجب أن تتطابق أسماء الحقول (أسماء الأجهزة) تمامًا مع أسماء أعمدة ملف CSV ، ومع ذلك فمن المنطقي ربطها على الأقل بكلمات متشابهة - وهذا يسهل تعيين الحقل في خطوة العملية.
حقل العنوان إلزامي لكل عقدة دروبال ، لذلك ليست هناك حاجة لإنشاء حقل عنوان. يمكنك ترك حقل النص كما هو أو يمكنك حذفه ، فهذا يعتمد على ما تخطط للقيام به بنوع المحتوى الخاص بك.
الخطوة # 4 - ملف تعريف الترحيل
مصدر الخطوة
- افتح محرر الكود المفضل لديك
- اكتب ما يلي:
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: "'"
معرّف الملف يطابق اسمه.
نحن نستخدم المكوِّن الإضافي csv الخاص بوحدة المساهمات ترحيل المصدر CSV في قسم المصدر.
يشير الرقم 1 في خيار header_row_count إلى قيمة عناوين الأعمدة (كلها موضوعة في الصف الأول).
يوفر تعريف المعرفات المعرف الفريد لكل سجل في ملف CSV ، وفي هذه الحالة ، عمود المعرف ، وهو من النوع الصحيح . لا تنس الأقواس ، لأن الوحدة تتوقع مصفوفة هنا.
يشير المحدد والضميمة إلى بنية ملف CSV ، وفي حالتي الخاصة ، يتم تحديده بواسطة "؛" الأحرف ، في حين يتم وضع السلاسل بين "" علامات تنصيص مفردة.
لاحظ أيضًا تعريف المسار. هذا هو المكان الذي يجب عليك وضع ملف CSV فيه ، حتى يتمكن دروبال من قراءة البيانات منه.
- افتح تطبيقك الطرفي.
- نوع :
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/
هذا سوف:
- قم بإنشاء دليل يسمى csv داخل المجلد العام لتثبيت دروبال الخاص بك.
- ضع نسخة من ملف CSV داخل هذا الدليل.
- اجعل الملف في متناول الجميع في النظام (بما في ذلك البرنامج المساعد المصدر).
خطوة العملية
هذا هو المكان الذي نقوم فيه بتعيين كل عمود من أعمدة ملف CSV مع الحقول الموجودة في نوع المحتوى:
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
سيكون الحقل field_editor نتيجة تنفيذ سلسلة من سلسلتين (القيم الموجودة داخل أعمدة المحرر و edition_number ).
أول 5 أزواج مفتاح / قيمة في النموذج drupal_machine_name: csv_column_name تعين سجلات CSV إلى حقول قاعدة البيانات دون إجراء أي تغييرات.
يتيح خيار المُحدِّد إمكانية تعيين مُحدِّد بين كلتا السلسلتين ، وفي هذه الحالة ، مساحة فارغة.
يساعدنا المكون الإضافي default_value في تحديد نوع الكيان لأن هذه المعلومات غير متوفرة في بيانات المصدر.
خطوة الوجهة
الجزء الأخير من هذه العملية هو خطوة الوجهة.
destination:
plugin: entity:node
نقوم بترحيل المحتوى وسيكون كل سجل عقدة.
الخطوة # 5 - تنفيذ الترحيل
- انقر فوق التكوين> مزامنة التهيئة> استيراد> عنصر واحد
- حدد الترحيل من القائمة المنسدلة
- الصق الكود من ملف .yml في منطقة النص
- انقر فوق استيراد
- انقر فوق "تأكيد" لمزامنة التكوين. ستصلك الرسالة "تم استيراد التكوين بنجاح"
- التغيير إلى تطبيق المحطة.
- اكتب ما يلي:
drush migrate:import my_first_migration
يمكنك الآن التحقق من محتوى موقعك.
لقد تعلمت المبادئ الأساسية لترحيل البيانات من ملف CSV إلى دروبال 8/9.
كما رأيت بالفعل ، تتطلب عملية الترحيل الانتباه إلى التفاصيل ، لذا تأكد من أنك تعمل أولاً على خادم مرحلي لأن خطأ واحدًا بسيطًا قد يؤدي إلى تعطيل الموقع بالكامل. آمل أن تكون قد أحببت هذا البرنامج التعليمي.
شكرا للقراءة!