الانتقال إلى المحتوى الرئيسي

دالة الجدول file

محرك جدول يوفّر واجهة شبيهة بالجدول لإجراء SELECT من الملفات وINSERT إليها، على غرار دالة الجدول s3. استخدم file عند العمل مع الملفات المحلية، واستخدم s3 عند العمل مع الحاويات في تخزين الكائنات مثل S3 أو GCS أو MinIO. يمكن استخدام الدالة file في استعلامات SELECT وINSERT لقراءة الملفات أو الكتابة إليها.

الصيغة

في استعلامات SELECT، يمكن أيضًا أن يكون path تعبيرًا يُرجِع Array(String):

الوسائط

عند حذف الوسيط structure، يستنتج ClickHouse المخطط من التنسيق نفسه. وتنتج التنسيقات المختلفة أسماء أعمدة وأنواعًا افتراضية مختلفة. لعرض المخطط لتنسيق معيّن، استخدم DESC مع دالة الجدول format.على سبيل المثال:

القيمة المعادة

جدول لقراءة البيانات من ملف أو كتابتها فيه.

أمثلة على الكتابة إلى ملف

الكتابة إلى ملف TSV

ونتيجةً لذلك، تُكتَب البيانات في الملف test.tsv:

كتابة مُقسَّمة إلى عدة ملفات TSV

إذا حدّدت تعبير PARTITION BY عند إدراج البيانات في دالة جدول من النوع file، فسيُنشأ ملف منفصل لكل partition. ويساعد تقسيم البيانات إلى ملفات منفصلة على تحسين أداء عمليات القراءة.
وبالتالي، تُكتب البيانات في ثلاثة ملفات: test_1.tsv وtest_2.tsv وtest_3.tsv.

أمثلة على القراءة من ملف

SELECT من ملف CSV

أولًا، اضبط user_files_path في إعدادات الخادم وجهّز ملفًا باسم test.csv:
ثم اقرأ البيانات من test.csv إلى جدول، ثم اعرض أول صفّين منه:

إدخال البيانات من ملف إلى جدول

قراءة البيانات من table.csv، الموجود في archive1.zip أو في archive2.zip أو كليهما:

أنماط glob في المسار

قد تستخدم المسارات أنماط glob. يجب أن تطابق الملفات نمط المسار بالكامل، لا اللاحقة أو البادئة فقط. ويوجد استثناء واحد: إذا كان المسار يشير إلى دليل موجود ولا يستخدم أنماط glob، فستُضاف * ضمنيًا إلى المسار بحيث تُحدَّد جميع الملفات الموجودة في الدليل.
  • * — يمثّل أي عدد من المحارف باستثناء /، بما في ذلك السلسلة الفارغة.
  • ? — يمثّل محرفًا واحدًا أيًا كان.
  • {some_string,another_string,yet_another_one} — يستبدل بأي من السلاسل 'some_string', 'another_string', 'yet_another_one'. ويمكن أن تحتوي السلاسل على الرمز /.
  • {N..M} — يمثّل أي رقم >= N و <= M.
  • ** - يمثّل جميع الملفات داخل مجلد على نحوٍ تكراري.
البُنى التي تستخدم {} مشابهة لما في دالتي الجداول remote و hdfs.

أمثلة

مثال لنفترض وجود هذه الملفات بالمسارات النسبية التالية:
  • some_dir/some_file_1
  • some_dir/some_file_2
  • some_dir/some_file_3
  • another_dir/some_file_1
  • another_dir/some_file_2
  • another_dir/some_file_3
نفّذ استعلامًا لحساب العدد الإجمالي للصفوف في جميع الملفات:
تعبير بديل للمسار يحقق النتيجة نفسها:
استعلم عن إجمالي عدد الصفوف في some_dir باستخدام * الضمني:
إذا كانت قائمة الملفات لديك تحتوي على نطاقات رقمية تبدأ بأصفار، فاستخدم الصيغة بالأقواس المعقوفة لكل رقم على حدة، أو استخدم ?.
مثال استعلم عن العدد الإجمالي للصفوف في الملفات المسماة file000 وfile001 و… وfile999:
مثال استعلم عن العدد الإجمالي للصفوف من جميع الملفات داخل الدليل big_dir/، بما في ذلك الأدلة الفرعية:
مثال استعلم عن العدد الإجمالي للصفوف في جميع ملفات file002 داخل أي مجلد ضمن الدليل big_dir/، بما يشمل جميع المجلدات الفرعية:

الأعمدة الافتراضية

  • _path — مسار الملف. النوع: LowCardinality(String).
  • _file — اسم الملف. النوع: LowCardinality(String).
  • _size — حجم الملف بالبايت. النوع: Nullable(UInt64). إذا كان حجم الملف غير معروف، تكون القيمة NULL.
  • _time — وقت آخر تعديل على الملف. النوع: Nullable(DateTime). إذا كان الوقت غير معروف، تكون القيمة NULL.

إعداد use_hive_partitioning

عند تعيين use_hive_partitioning إلى 1، سيكتشف ClickHouse التقسيم بنمط Hive في المسار (/name=value/)، وسيتيح استخدام أعمدة التقسيم كأعمدة افتراضية في الاستعلام. وستحمل هذه الأعمدة الافتراضية الأسماء نفسها الموجودة في مسار التقسيم. مثال استخدام عمود افتراضي أُنشئ باستخدام التقسيم بنمط Hive

الإعدادات

آخر تعديل في ٢٥ يونيو ٢٠٢٦