Skip to main content
يتيح هذا المحرك استيراد البيانات إلى SQLite وتصديرها منه، كما يدعم الاستعلام عن جداول SQLite مباشرةً من ClickHouse.

إنشاء جدول

معلمات المحرّك
  • db_path — مسار ملف SQLite الذي يحتوي على قاعدة البيانات.
  • table — اسم جدول في قاعدة بيانات SQLite، أو استعلام يُمرَّر إلى SQLite كما هو (انظر تمرير استعلام بدلًا من اسم جدول).

تمرير استعلام بدلًا من اسم جدول

بدلًا من اسم الجدول، يمكن أن تكون قيمة الوسيطة table استعلام SELECT يُمرَّر إلى SQLite كما هو. ويُستدل على بنية الجدول من نتيجة الاستعلام. ويمكن كتابة الاستعلام إما كاستعلام فرعي أو بتغليفه داخل الدالة query:
مثل هذا الجدول للقراءة فقط: لا يُسمح بتنفيذ INSERT فيه. وتدعم دالة الجدول sqlite الصياغة نفسها.
يُحلَّل شكل الاستعلام الفرعي (SELECT ...) بواسطة ClickHouse، ثم يُعاد تسلسله قبل إرساله إلى SQLite. لذلك يجب أن يكون صالحًا في ClickHouse SQL. ولتمرير صياغة خاصة بـ SQLite لا يحلّلها ClickHouse، استخدم صيغة query('...')، إذ يُرسَل نصها إلى SQLite كما هو.أي WHERE أو LIMIT أو aggregation أو غير ذلك من عناصر استعلام ClickHouse المحيط لا يُدفَع إلى داخل الاستعلام المُمرَّر — بل يُطبَّق في ClickHouse بعد جلب نتيجة الاستعلام كاملةً. ولتقييد البيانات المقروءة من SQLite، ضع filter داخل الاستعلام المُمرَّر. ومع external_table_strict_query = 1، يُرفَض أي filter خارجي على أعمدة الجدول عبر exception بدلًا من تطبيقه محليًا، لأنه لا يمكن دفعه إلى داخل الاستعلام المُمرَّر. ويشمل هذا الفحص predicate الخاص بـ WHERE في المستوى الأعلى وكل عامل من عوامل AND في المستوى الأعلى. أما PREWHERE على أعمدة هذا الجدول فلا يخضع لهذا الإعداد: فمحرّك الجدول هذا لا يدعم PREWHERE، ويُرفَض مثل هذا الاستعلام بالخطأ ILLEGAL_PREWHERE بصرف النظر عن الإعداد. ولا يُجرى الفحص إلا حيث يمكن دفع filter أصلًا: عندما يكون هذا الجدول هو الجدول الوحيد في الاستعلام، أو على أي من جانبي INNER JOIN، أو على الجانب المحفوظ من outer join (الجانب الأيسر في LEFT JOIN، والجانب الأيمن في RIGHT JOIN). وعلى الجانب غير المحفوظ من LEFT/RIGHT JOIN وعلى أي من جانبي FULL JOIN لا يُدفَع شيء ولا يُفحَص شيء، لذا يُطبَّق filter على أعمدة هذا الجدول محليًا بعد الـ join حتى في الوضع الصارم. وحيث يُجرى الفحص، فإن predicate يشير إلى جداول أخرى مضمومة في الاستعلام المحيط لا يُدفَع ويُستثنى من الفحص، سواء أشار إلى الجانب المضموم فقط أو خلطه مع هذا الجدول داخل تعبير واحد ليس AND (مثل OR)؛ ويحتفظ مثل هذا الـ predicate بنقطة تقييمه المعتادة في ClickHouse (WHERE بعد الـ join، وPREWHERE قبله) ولا يُرفَض.

دعم أنواع البيانات

عند تحديد أنواع أعمدة ClickHouse صراحةً في تعريف الجدول، يمكن تحليل أنواع ClickHouse التالية من أعمدة TEXT في SQLite: راجع محرك قاعدة بيانات SQLite للاطّلاع على مطابقة الأنواع الافتراضية.

مثال على الاستخدام

يعرض استعلامًا لإنشاء جدول SQLite:
يُرجِع البيانات من الجدول:
راجع أيضًا
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦