دالة الجدول file
SELECT من الملفات وINSERT إليها، على غرار دالة الجدول s3. استخدم 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 في المسار
* ضمنيًا إلى المسار بحيث
تُحدَّد جميع الملفات الموجودة في الدليل.
*— يمثّل أي عدد من المحارف باستثناء/، بما في ذلك السلسلة الفارغة.?— يمثّل محرفًا واحدًا أيًا كان.{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