> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> يتيح الاتصال بقاعدة بيانات SQLite وتنفيذ استعلامات `INSERT` و`SELECT` لتبادل البيانات بين ClickHouse وSQLite.

# SQLite

يتيح الاتصال بقاعدة بيانات [SQLite](https://www.sqlite.org/index.html) وتنفيذ استعلامات `INSERT` و`SELECT` لتبادل البيانات بين ClickHouse وSQLite.

<div id="creating-a-database">
  ## إنشاء قاعدة بيانات
</div>

```sql theme={null}
    CREATE DATABASE sqlite_database
    ENGINE = SQLite('db_path')
```

**معلمات المحرك**

* `db_path` — مسار ملف يحتوي على قاعدة بيانات SQLite.

<div id="data_types-support">
  ## دعم أنواع البيانات
</div>

يوضح الجدول أدناه تعيين الأنواع الافتراضي عندما يستنتج ClickHouse المخطط تلقائيًا من SQLite:

| SQLite  | ClickHouse                                 |
| ------- | ------------------------------------------ |
| INTEGER | [Int32](/ar/reference/data-types/int-uint) |
| REAL    | [Float32](/ar/reference/data-types/float)  |
| TEXT    | [String](/ar/reference/data-types/string)  |
| TEXT    | [UUID](/ar/reference/data-types/uuid)      |
| BLOB    | [String](/ar/reference/data-types/string)  |

عند تعريف جدول صراحةً باستخدام أنواع ClickHouse محددة عبر [SQLite table engine](/ar/reference/engines/table-engines/integrations/sqlite)، يمكن تحليل أنواع ClickHouse التالية من أعمدة TEXT في SQLite:

* [Date](/ar/reference/data-types/date), [Date32](/ar/reference/data-types/date32)
* [DateTime](/ar/reference/data-types/datetime), [DateTime64](/ar/reference/data-types/datetime64)
* [UUID](/ar/reference/data-types/uuid)
* [Enum8, Enum16](/ar/reference/data-types/enum)
* [Decimal32, Decimal64, Decimal128, Decimal256](/ar/reference/data-types/decimal)
* [FixedString](/ar/reference/data-types/fixedstring)
* جميع أنواع الأعداد الصحيحة ([UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64](/ar/reference/data-types/int-uint))
* [Float32, Float64](/ar/reference/data-types/float)

يعتمد SQLite على نظام أنواع ديناميكي، كما تُجري دوال الوصول حسب النوع فيه تحويلًا تلقائيًا للأنواع. على سبيل المثال، ستُرجع قراءة عمود TEXT كعدد صحيح القيمة 0 إذا تعذر تحليل النص كرقم. وهذا يعني أنه إذا جرى تعريف جدول ClickHouse بنوع مختلف عن نوع عمود SQLite الأساسي، فقد تُحوَّل القيم ضمنيًا بدلًا من أن تتسبب في حدوث خطأ.

<div id="specifics-and-recommendations">
  ## تفاصيل وتوصيات
</div>

يخزّن SQLite قاعدة البيانات بالكامل (التعريفات والجداول والفهارس والبيانات نفسها) في ملف واحد عابر للمنصات على الجهاز المضيف. وأثناء الكتابة، يفرض SQLite قفلًا على ملف قاعدة البيانات بالكامل، لذلك تُنفَّذ عمليات الكتابة بشكل تسلسلي. أما عمليات القراءة، فيمكن تنفيذها بالتوازي.
لا يتطلب SQLite إدارة الخدمات (مثل برامج نصية لبدء التشغيل) أو التحكم في الوصول استنادًا إلى `GRANT` وكلمات المرور. ويُدار التحكم في الوصول من خلال أذونات نظام الملفات الممنوحة لملف قاعدة البيانات نفسه.

<div id="usage-example">
  ## مثال على الاستخدام
</div>

قاعدة بيانات في ClickHouse متصلة بـ SQLite:

```sql theme={null}
CREATE DATABASE sqlite_db ENGINE = SQLite('sqlite.db');
SHOW TABLES FROM sqlite_db;
```

```text theme={null}
┌──name───┐
│ table1  │
│ table2  │
└─────────┘
```

يعرض الجداول:

```sql theme={null}
SELECT * FROM sqlite_db.table1;
```

```text theme={null}
┌─col1──┬─col2─┐
│ line1 │    1 │
│ line2 │    2 │
│ line3 │    3 │
└───────┴──────┘
```

إدراج البيانات في جدول SQLite انطلاقًا من جدول ClickHouse:

```sql theme={null}
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;
```

```text theme={null}
┌─col1──┬─col2─┐
│ line1 │    1 │
│ line2 │    2 │
│ line3 │    3 │
│ text  │   10 │
└───────┴──────┘
```
