ترحيل البيانات من ملف CSV في دروبال 8/9 - OSTraining
نشرت: 2022-06-29يمكن تنفيذ عملية ترحيل البيانات إلى قاعدة بيانات دروبال من ملف CSV من خلال واجهة برمجة تطبيقات Migrate المدمجة من Drupal وثلاث وحدات مخصصة إضافية (Migrate Source CSV و Migrate Plus و Migrate Tools).
يُعرف هذا باسم عملية ETL (استخراج - تحويل - تحميل) ، حيث يتم جلب البيانات من مصدر واحد في الخطوة الأولى ، وتحويلها في الخطوة الثانية ، وتحميلها أخيرًا إلى وجهتها على قاعدة بيانات دروبال في الخطوة الثالثة.
سيشرح هذا البرنامج التعليمي إنشاء 12 عقدة كتابية لقاعدة بيانات المكتبة. استمر في القراءة لتتعلم كيف!

الخطوة # 1 - تثبيت Drush والوحدات النمطية المطلوبة
لتنفيذ عمليات الترحيل في دروبال ، نحتاج إلى دروش. Drush ليس وحدة دروبال ، ولكنه واجهة سطر أوامر لتنفيذ أوامر دروبال. لتثبيت أحدث إصدار من Drush ،
- افتح التطبيق الطرفي لنظامك
- ضع المؤشر خارج دليل
/web
. - النوع:
composer require drush/drush
سيؤدي هذا إلى تثبيت Drush داخل دليل vendor/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
يؤدي هذا إلى تنزيل الملف المسمى drush.phar
من GitHub.

- اكتب ما يلي لجعل الملف قابلاً للتنفيذ:
chmod +x drush.phar
- النوع :
sudo mv drush.phar /usr/local/bin/ drush
سيؤدي ذلك إلى نقل ملف .phar إلى $ PATH وتشغيل 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()));"

ملاحظة : المكون الإضافي 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 ، ومع ذلك فمن المنطقي ربطها على الأقل بكلمات متشابهة - وهذا يسهل تعيين الحقل في خطوة العملية.

حقل title
إلزامي لكل عقدة دروبال ، لذلك ليست هناك حاجة لإنشاء حقل عنوان. يمكنك ترك حقل النص كما هو أو يمكنك حذفه ، فهذا يعتمد على ما تخطط للقيام به بنوع المحتوى الخاص بك.
الخطوة # 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
إلى قيمة عناوين الأعمدة (يتم وضعها جميعًا في الصف الأول).
يوفر تعريف ids
المعرف الفريد لكل سجل في ملف CSV ، وفي هذه الحالة ، عمود id
، وهو من النوع integer
. لا تنس الأقواس ، لأن الوحدة تتوقع مصفوفة هنا.
يشير delimiter
enclosure
إلى بنية ملف 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
أول 5 أزواج مفتاح / قيمة في النموذج drupal_machine_name: csv_column_name تعين سجلات CSV إلى حقول قاعدة البيانات دون إجراء أي تغييرات.
سيكون الحقل field_editor نتيجة تنفيذ تسلسل سلسلتين (القيم الموجودة داخل أعمدة المحرر و edition_number ).
يتيح خيار المُحدِّد إمكانية تعيين مُحدِّد بين كلتا السلسلتين ، وفي هذه الحالة ، مساحة فارغة.
يساعدنا المكون الإضافي default_value في تحديد نوع الكيان لأن هذه المعلومات غير متوفرة في بيانات المصدر.
خطوة الوجهة
الجزء الأخير من هذه العملية هو خطوة الوجهة.
destination: plugin: entity:node
نقوم بترحيل المحتوى وسيكون كل سجل عقدة.
الخطوة # 5 - تنفيذ الترحيل
- انقر فوق التكوين> مزامنة التهيئة> استيراد> عنصر واحد
- حدد الترحيل من القائمة المنسدلة
- الصق الكود من ملف .yml في منطقة النص
- انقر فوق استيراد

- انقر فوق "تأكيد" لمزامنة التكوين. ستتلقى الرسالة "تم استيراد التكوين بنجاح"
- التغيير إلى تطبيق المحطة.
- اكتب ما يلي:
drush migrate:import my_first_migration

يمكنك الآن التحقق من محتوى موقعك.

لقد تعلمت المبادئ الأساسية لترحيل البيانات من ملف CSV إلى دروبال 8/9.
كما رأيت بالفعل ، تتطلب عملية الترحيل الانتباه إلى التفاصيل ، لذا تأكد من أنك تعمل أولاً على خادم مرحلي لأن خطأ واحدًا بسيطًا قد يؤدي إلى تعطيل الموقع بالكامل. أتمنى أن تكون قد أحببت هذا البرنامج التعليمي.
شكرا للقراءة!