TabSeparated, Native، إلخ).
سيناريوهات الاستخدام:
- تصدير البيانات من ClickHouse إلى ملف.
- تحويل البيانات من تنسيق إلى آخر.
- تحديث البيانات في ClickHouse من خلال تحرير ملف على قرص.
هذا المحرك غير متاح حاليًا في ClickHouse Cloud، يُرجى استخدام دالة الجدول S3 بدلًا من ذلك.
الاستخدام في خادم ClickHouse
Format أحد تنسيقات الملفات المتاحة. ولتنفيذ استعلامات
SELECT، يجب أن يكون التنسيق مدعومًا للإدخال، أما لتنفيذ
استعلامات INSERT، فيجب أن يكون مدعومًا للإخراج. تُسرد التنسيقات المتاحة في قسم
التنسيقات.
لا يسمح ClickHouse بتحديد مسار filesystem للمحرّك File. وسيستخدم المجلد المحدَّد بواسطة إعداد path في تهيئة الخادم.
عند إنشاء جدول باستخدام File(Format)، يُنشأ مجلد فرعي فارغ داخل ذلك المجلد. وعند كتابة البيانات إلى ذلك الجدول، تُحفظ في الملف data.Format داخل ذلك المجلد الفرعي.
يمكنك إنشاء هذا المجلد الفرعي والملف يدويًا في filesystem الخاص بالخادم، ثم تنفيذ ATTACH لهما وربطهما بمعلومات الجدول المطابقة للاسم، بحيث يمكنك الاستعلام عن البيانات من ذلك الملف.
توخَّ الحذر عند استخدام هذه الوظيفة، لأن ClickHouse لا يتتبّع التغييرات الخارجية التي تطرأ على مثل هذه الملفات. ونتيجة الكتابة المتزامنة عبر ClickHouse ومن خارجه غير معرّفة.
مثال
file_engine_table:
/var/lib/clickhouse/data/default/file_engine_table.
2. أنشئ يدويًا الملف /var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated بحيث يتضمن:
الاستخدام في ClickHouse-local
Format. ويمكن تحديد تدفقات الإدخال/الإخراج الافتراضية باستخدام أسماء رقمية أو أسماء مقروءة بشريًا مثل 0 أو stdin، و1 أو stdout. كما يمكن قراءة الملفات المضغوطة وكتابتها استنادًا إلى مَعلَمة إضافية للمحرك أو امتداد الملف (gz أو br أو xz).
مثال:
تفاصيل التنفيذ
- يمكن تنفيذ عدة استعلامات
SELECTبالتزامن، لكن استعلاماتINSERTتنتظر بعضها بعضًا. - يدعم إنشاء ملف جديد باستخدام استعلام
INSERT. - إذا كان الملف موجودًا، فإن
INSERTيُلحِق به قيماً جديدة. - غير مدعوم:
ALTERSELECT ... SAMPLE- الفهارس
- النسخ المتماثل
PARTITION BY
PARTITION BY — اختياري. يمكن إنشاء ملفات منفصلة عبر تقسيم البيانات باستخدام مفتاح تقسيم. في معظم الحالات، لن تحتاج إلى مفتاح تقسيم، وحتى عند الحاجة إليه، فغالباً لا تحتاج إلى مفتاح تقسيم أدق من التقسيم حسب الشهر. لا يؤدي التقسيم إلى تسريع الاستعلامات (على خلاف تعبير ORDER BY). ويجب ألا تستخدم أبداً تقسيمًا شديد الدقة. لا تقسّم بياناتك حسب معرّفات العملاء أو أسمائهم (وعوضاً عن ذلك، اجعل معرّف العميل أو اسمه هو العمود الأول في تعبير ORDER BY).
للتقسيم حسب الشهر، استخدم التعبير toYYYYMM(date_column)، حيث إن date_column هو عمود يحتوي على تاريخ من النوع Date. وتكون أسماء الأقسام هنا بالتنسيق "YYYYMM".
الأعمدة الافتراضية
_path— مسار الملف. النوع:LowCardinality(String)._file— اسم الملف. النوع:LowCardinality(String)._size— حجم الملف بالبايت. النوع:Nullable(UInt64). إذا كان الحجم غير معروف، تكون القيمةNULL._time— وقت آخر تعديل للملف. النوع:Nullable(DateTime). إذا كان الوقت غير معروف، تكون القيمةNULL.
الإعدادات
- engine_file_empty_if_not_exists - يتيح قراءة بيانات فارغة من ملف غير موجود. يكون معطّلًا افتراضيًا.
- engine_file_truncate_on_insert - يتيح اقتطاع الملف قبل الإدراج فيه. يكون معطّلًا افتراضيًا.
- engine_file_allow_create_multiple_files - يتيح إنشاء ملف جديد عند كل عملية إدراج إذا كان للتنسيق لاحقة. يكون معطّلًا افتراضيًا.
- engine_file_skip_empty_files - يتيح تخطي الملفات الفارغة أثناء القراءة. يكون معطّلًا افتراضيًا.
- storage_file_read_method - طريقة قراءة البيانات من ملف التخزين، وتكون إحدى القيم التالية:
read،pread،mmap. لا تنطبق طريقة mmap على clickhouse-server (فهي مخصّصة لـ clickhouse-local). القيمة الافتراضية:preadلـ clickhouse-server، وmmapلـ clickhouse-local.