يتيح الاتصال بقاعدة بيانات SQLite وتنفيذ استعلامات INSERT وSELECT لتبادل البيانات بين ClickHouse وSQLite.
CREATE DATABASE sqlite_database
ENGINE = SQLite('db_path')
معلمات المحرك
db_path — مسار ملف يحتوي على قاعدة بيانات SQLite.
يوضح الجدول أدناه تعيين الأنواع الافتراضي عندما يستنتج ClickHouse المخطط تلقائيًا من SQLite:
| SQLite | ClickHouse |
|---|
| INTEGER | Int32 |
| REAL | Float32 |
| TEXT | String |
| TEXT | UUID |
| BLOB | String |
عند تعريف جدول صراحةً باستخدام أنواع ClickHouse محددة عبر SQLite table engine، يمكن تحليل أنواع ClickHouse التالية من أعمدة TEXT في SQLite:
- Date, Date32
- DateTime, DateTime64
- UUID
- Enum8, Enum16
- Decimal32, Decimal64, Decimal128, Decimal256
- FixedString
- جميع أنواع الأعداد الصحيحة (UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64)
- Float32, Float64
يعتمد SQLite على نظام أنواع ديناميكي، كما تُجري دوال الوصول حسب النوع فيه تحويلًا تلقائيًا للأنواع. على سبيل المثال، ستُرجع قراءة عمود TEXT كعدد صحيح القيمة 0 إذا تعذر تحليل النص كرقم. وهذا يعني أنه إذا جرى تعريف جدول ClickHouse بنوع مختلف عن نوع عمود SQLite الأساسي، فقد تُحوَّل القيم ضمنيًا بدلًا من أن تتسبب في حدوث خطأ.
يخزّن SQLite قاعدة البيانات بالكامل (التعريفات والجداول والفهارس والبيانات نفسها) في ملف واحد عابر للمنصات على الجهاز المضيف. وأثناء الكتابة، يفرض SQLite قفلًا على ملف قاعدة البيانات بالكامل، لذلك تُنفَّذ عمليات الكتابة بشكل تسلسلي. أما عمليات القراءة، فيمكن تنفيذها بالتوازي.
لا يتطلب SQLite إدارة الخدمات (مثل برامج نصية لبدء التشغيل) أو التحكم في الوصول استنادًا إلى GRANT وكلمات المرور. ويُدار التحكم في الوصول من خلال أذونات نظام الملفات الممنوحة لملف قاعدة البيانات نفسه.
قاعدة بيانات في ClickHouse متصلة بـ SQLite:
CREATE DATABASE sqlite_db ENGINE = SQLite('sqlite.db');
SHOW TABLES FROM sqlite_db;
┌──name───┐
│ table1 │
│ table2 │
└─────────┘
يعرض الجداول:
SELECT * FROM sqlite_db.table1;
┌─col1──┬─col2─┐
│ line1 │ 1 │
│ line2 │ 2 │
│ line3 │ 3 │
└───────┴──────┘
إدراج البيانات في جدول SQLite انطلاقًا من جدول ClickHouse:
CREATE TABLE clickhouse_table(`col1` String,`col2` Int16) ENGINE = MergeTree() ORDER BY col2;
INSERT INTO clickhouse_table VALUES ('text',10);
INSERT INTO sqlite_db.table1 SELECT * FROM clickhouse_table;
SELECT * FROM sqlite_db.table1;
┌─col1──┬─col2─┐
│ line1 │ 1 │
│ line2 │ 2 │
│ line3 │ 3 │
│ text │ 10 │
└───────┴──────┘
آخر تعديل في ٢٩ يونيو ٢٠٢٦