file عند العمل مع الملفات المحلية، وs3 عند العمل مع حاويات في تخزين الكائنات مثل S3 أو GCS أو MinIO.
يمكن استخدام الدالة file في استعلامات SELECT وINSERT للقراءة من الملفات أو الكتابة إليها.
الصيغة
SELECT، يمكن أيضًا أن يكون path تعبيرًا يُرجِع Array(String):
الوسائط
القيمة المعادة
جدول لقراءة البيانات من ملف أو كتابتها فيه.أمثلة على الكتابة إلى ملف
الكتابة إلى ملف 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_1some_dir/some_file_2some_dir/some_file_3another_dir/some_file_1another_dir/some_file_2another_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