الانتقال إلى المحتوى الرئيسي
يتيح ClickHouse إرسال البيانات التي يحتاجها الخادم لمعالجة استعلام ما، مع استعلام SELECT نفسه. وتوضع هذه البيانات في جدول مؤقت (راجع قسم “الجداول المؤقتة”) ويمكن استخدامها في الاستعلام (على سبيل المثال، في عوامل التشغيل IN). على سبيل المثال، إذا كان لديك ملف نصي يحتوي على معرّفات مستخدمين مهمة، فيمكنك تحميله إلى الخادم مع استعلام يستخدم التصفية باستخدام هذه القائمة. إذا كنت بحاجة إلى تشغيل أكثر من استعلام واحد باستخدام حجم كبير من البيانات الخارجية، فلا تستخدم هذه الميزة. من الأفضل تحميل البيانات إلى قاعدة البيانات مسبقًا. يمكن تحميل البيانات الخارجية باستخدام عميل سطر الأوامر (في الوضع غير التفاعلي)، أو باستخدام واجهة HTTP. في عميل سطر الأوامر، يمكنك تحديد قسم المعلمات بالتنسيق
--external --file=... [--name=...] [--format=...] [--types=...|--structure=...]
قد يكون لديك عدة أقسام مثل هذا، بحسب عدد الجداول التي يتم إرسالها. –external – يشير إلى بداية عبارة. –file – المسار إلى الملف الذي يحتوي على dump الجدول، أو - الذي يشير إلى stdin. لا يمكن استرداد سوى جدول واحد من stdin. المعلمات التالية اختيارية: –name– اسم الجدول. إذا تم حذفه، فسيُستخدم _data. –format – تنسيق البيانات في الملف. إذا تم حذفه، فسيُستخدم TabSeparated. أحد المعلمات التالية مطلوب:–types – قائمة بأنواع الأعمدة مفصولة بفواصل. على سبيل المثال: UInt64,String. ستتم تسمية الأعمدة _1 و _2 و … –structure– بنية الجدول بالتنسيق UserID UInt64, URL String. ويحدّد أسماء الأعمدة وأنواعها. سيتم تحليل الملفات المحددة في ‘file’ وفقًا للتنسيق المحدد في ‘format’، باستخدام أنواع البيانات المحددة في ‘types’ أو ‘structure’. وسيتم رفع الجدول إلى الخادم وسيكون متاحًا هناك كجدول مؤقت بالاسم المحدد في ‘name’. أمثلة:
$ echo -ne "1\n2\n3\n" | clickhouse-client --query="SELECT count() FROM test.visits WHERE TraficSourceID IN _data" --external --file=- --types=Int8
849897
$ cat /etc/passwd | sed 's/:/\t/g' | clickhouse-client --query="SELECT shell, count() AS c FROM passwd GROUP BY shell ORDER BY c DESC" --external --file=- --name=passwd --structure='login String, unused String, uid UInt16, gid UInt16, comment String, home String, shell String'
/bin/sh 20
/bin/false      5
/bin/bash       4
/usr/sbin/nologin       1
/bin/sync       1
عند استخدام واجهة HTTP، تُمرَّر البيانات الخارجية بتنسيق multipart/form-data. ويُرسَل كل جدول كملف منفصل. ويُؤخَذ اسم الجدول من اسم الملف. وتُمرَّر المعلمات name_format وname_types وname_structure إلى query_string، حيث إن name هو اسم الجدول الذي تشير إليه هذه المعلمات. ويكون معنى هذه المعلمات هو نفسه عند استخدام عميل سطر الأوامر. مثال:
$ cat /etc/passwd | sed 's/:/\t/g' > passwd.tsv

$ curl -F 'passwd=@passwd.tsv;' 'http://localhost:8123/?query=SELECT+shell,+count()+AS+c+FROM+passwd+GROUP+BY+shell+ORDER+BY+c+DESC&passwd_structure=login+String,+unused+String,+uid+UInt16,+gid+UInt16,+comment+String,+home+String,+shell+String'
/bin/sh 20
/bin/false      5
/bin/bash       4
/usr/sbin/nologin       1
/bin/sync       1
في معالجة الاستعلامات الموزعة، تُرسَل الجداول المؤقتة إلى جميع الخوادم البعيدة.
آخر تعديل في ٢٩ يونيو ٢٠٢٦