Skip to main content
غالبًا ما نحتاج إلى التعامل مع بيانات بتنسيقات نصية مخصصة. وقد يكون ذلك تنسيقًا غير قياسي، أو JSON غير صالح، أو ملف CSV تالفًا. ولا تعمل المحللات القياسية مثل CSV أو JSON في جميع هذه الحالات. لكن ClickHouse يوفّر حلًا لذلك من خلال تنسيقي قالب وRegex القويين.

الاستيراد باستخدام قالب

لنفترض أننا نريد استيراد البيانات من ملف السجل التالي:
يمكننا استخدام تنسيق Template لاستيراد هذه البيانات. ويجب تعريف سلسلة قالب تتضمن عناصر نائبة للقيم لكل صف من بيانات الإدخال:
لنُنشئ جدولًا لاستيراد بياناتنا إليه:
لاستيراد البيانات باستخدام قالب معيّن، علينا حفظ سلسلة القالب الخاصة بنا في ملف (row.template في حالتنا):
نحدّد اسم العمود وقاعدة الإفلات بصيغة ${name:escaping}. تتوفر هنا عدة خيارات، مثل CSV وJSON وEscaped وQuoted، وتطبّق قواعد الإفلات المقابلة. يمكننا الآن استخدام الملف المحدد كوسيط لخيار الإعدادات format_template_row عند استيراد البيانات (لاحظ أن ملفَي القالب والبيانات يجب ألا يحتويَا على رمز \n إضافي في نهاية الملف):
ويمكننا التأكد من تحميل بياناتنا إلى الجدول:

تجاهل المسافات البيضاء

فكّر في استخدام TemplateIgnoreSpaces، إذ يتيح تجاهل المسافات البيضاء بين المحددات في القالب:

تصدير البيانات باستخدام القوالب

يمكننا أيضًا تصدير البيانات إلى أي تنسيق نصي باستخدام القوالب. في هذه الحالة، نحتاج إلى إنشاء ملفين: قالب مجموعة النتائج، الذي يحدّد بنية مجموعة النتائج بالكامل:
هنا، يُمثّل rows_read وtime مقاييس النظام المتاحة لكل طلب. ويشير data إلى الصفوف المُولَّدة (يجب أن يأتي ${data} دائمًا كأول عنصر نائب في هذا الملف)، استنادًا إلى قالب مُعرَّف في ملف قالب الصفوف:
الآن، لنستخدم هذه القوالب لتصدير الاستعلام التالي:

التصدير إلى ملفات HTML

يمكن أيضًا تصدير النتائج المعتمدة على القوالب إلى ملفات باستخدام عبارة INTO OUTFILE. لنُنشئ ملفات HTML استنادًا إلى تنسيقي مجموعة النتائج والصف المحدَّدين:

التصدير إلى XML

يمكن استخدام تنسيق Template لإنشاء أي ملفات بتنسيقات نصية تقريبًا، بما في ذلك XML. ما عليك سوى توفير قالب مناسب ثم تنفيذ التصدير. يمكنك أيضًا استخدام تنسيق XML للحصول على نتائج XML قياسية تتضمن البيانات الوصفية:

استيراد البيانات باستخدام التعبيرات النمطية

يُستخدم تنسيق Regexp للحالات الأكثر تعقيدًا، عندما يلزم parse بيانات الإدخال بطريقة أكثر تعقيدًا. لنحلّل ملف المثال error.log، لكن هذه المرة سنستخرج اسم الملف والبروتوكول لحفظهما في أعمدة منفصلة. أولًا، لنُعِد جدولًا جديدًا لهذا الغرض:
يمكننا الآن استيراد البيانات باستخدام تعبير نمطي:
سيُدرج ClickHouse البيانات من كل مجموعة التقاط في العمود المناسب وفقًا لترتيبها. لنتحقق من البيانات:
بشكلٍ افتراضي، سيُصدر ClickHouse خطأً عند وجود صفوف غير متطابقة. إذا كنت تريد تخطي الصفوف غير المتطابقة بدلًا من ذلك، ففعِّل هذا السلوك باستخدام الخيار format_regexp_skip_unmatched:

تنسيقات أخرى

يدعم ClickHouse العديد من التنسيقات، النصية والثنائية على حد سواء، لتلبية مختلف السيناريوهات والمنصات. اطّلع على المزيد من التنسيقات وطرق العمل معها في المقالات التالية: وألقِ نظرة أيضًا على clickhouse-local - وهي أداة محمولة متكاملة الميزات للعمل على الملفات المحلية/البعيدة دون الحاجة إلى ClickHouse server.
آخر تعديل في ٣ يوليو ٢٠٢٦