> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ODBC

> صفحة تشرح تكامل ODBC

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            غير مدعوم في ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

يتيح لـ ClickHouse الاتصال بقواعد البيانات الخارجية عبر [ODBC](https://en.wikipedia.org/wiki/Open_Database_Connectivity).

لتنفيذ اتصالات ODBC بأمان، يستخدم ClickHouse برنامجًا منفصلًا هو `clickhouse-odbc-bridge`. وإذا جرى تحميل برنامج تشغيل ODBC مباشرةً من `clickhouse-server`، فقد تؤدي مشكلات برنامج التشغيل إلى تعطل خادم ClickHouse. ويشغّل ClickHouse تلقائيًا `clickhouse-odbc-bridge` عند الحاجة إليه. ويُثبَّت برنامج جسر ODBC من الحزمة نفسها التي تتضمن `clickhouse-server`.

يدعم هذا المحرك نوع البيانات [Nullable](/docs/ar/reference/data-types/nullable).

<div id="creating-a-table">
  ## إنشاء جدول
</div>

```sql theme={null}
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1],
    name2 [type2],
    ...
)
ENGINE = ODBC(datasource, external_database, external_table)
```

اطّلع على وصف تفصيلي لاستعلام [CREATE TABLE](/docs/ar/reference/statements/create/table).

قد تختلف بنية الجدول عن بنية الجدول المصدر:

* يجب أن تكون أسماء الأعمدة مطابقةً لما في الجدول المصدر، ولكن يمكنك استخدام بعض هذه الأعمدة فقط وبأي ترتيب.
* قد تختلف أنواع الأعمدة عن تلك الموجودة في الجدول المصدر. يحاول ClickHouse [cast](/docs/ar/reference/functions/regular-functions/type-conversion-functions#CAST) القيم إلى أنواع بيانات ClickHouse.
* يحدّد الإعداد [external\_table\_functions\_use\_nulls](/docs/ar/reference/settings/session-settings#external_table_functions_use_nulls) كيفية التعامل مع الأعمدة Nullable. القيمة الافتراضية: 1. إذا كانت القيمة 0، فلن تُنشئ دالة الجدول أعمدة Nullable، وستُدرج القيم الافتراضية بدلًا من nulls. وينطبق ذلك أيضًا على قيم NULL داخل المصفوفات.

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

* `datasource` — اسم القسم الذي يحتوي على إعدادات الاتصال في ملف `odbc.ini`.
* `external_database` — اسم قاعدة بيانات في نظام إدارة قواعد بيانات خارجي.
* `external_table` — اسم جدول في `external_database`.

يمكن أيضًا تمرير هذه المعلمات باستخدام [المجموعات المسماة](/docs/ar/concepts/features/configuration/server-config/named-collections).

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

**استرجاع البيانات من تثبيت MySQL المحلي عبر ODBC**

تم التحقق من هذا المثال على Ubuntu Linux 18.04 وMySQL server 5.7.

تأكد من تثبيت unixODBC وMySQL Connector.

افتراضيًا (إذا تم التثبيت من الحزم)، يبدأ ClickHouse العمل بالمستخدم `clickhouse`. لذلك، تحتاج إلى إنشاء هذا المستخدم وتهيئته على MySQL server.

```bash theme={null}
$ sudo mysql
```

```sql theme={null}
mysql> CREATE USER 'clickhouse'@'localhost' IDENTIFIED BY 'clickhouse';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'clickhouse'@'localhost' WITH GRANT OPTION;
```

ثم قم بتهيئة الاتصال في `/etc/odbc.ini`.

```bash theme={null}
$ cat /etc/odbc.ini
[mysqlconn]
DRIVER = /usr/local/lib/libmyodbc5w.so
SERVER = 127.0.0.1
PORT = 3306
DATABASE = test
USER = clickhouse
PASSWORD = clickhouse
```

يمكنك التحقق من الاتصال باستخدام الأداة `isql` المتوفرة ضمن تثبيت unixODBC.

```bash theme={null}
$ isql -v mysqlconn
+-------------------------+
| Connected!                            |
|                                       |
...
```

جدول في MySQL:

```text theme={null}
mysql> CREATE DATABASE test;
Query OK, 1 row affected (0,01 sec)

mysql> CREATE TABLE `test`.`test` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `int_nullable` INT NULL DEFAULT NULL,
    ->   `float` FLOAT NOT NULL,
    ->   `float_nullable` FLOAT NULL DEFAULT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into test.test (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from test.test;
+------+----------+-----+----------+
| int_id | int_nullable | float | float_nullable |
+------+----------+-----+----------+
|      1 |         NULL |     2 |           NULL |
+------+----------+-----+----------+
1 row in set (0,00 sec)
```

جدول في ClickHouse يسترجع البيانات من جدول MySQL:

```sql theme={null}
CREATE TABLE odbc_t
(
    `int_id` Int32,
    `float_nullable` Nullable(Float32)
)
ENGINE = ODBC('DSN=mysqlconn', 'test', 'test')
```

```sql theme={null}
SELECT * FROM odbc_t
```

```text theme={null}
┌─int_id─┬─float_nullable─┐
│      1 │           ᴺᵁᴸᴸ │
└────────┴────────────────┘
```

<div id="see-also">
  ## انظر أيضًا
</div>

* [قواميس ODBC](/docs/ar/reference/statements/create/dictionary/sources/odbc)
* [دالة الجدول ODBC](/docs/ar/reference/functions/table-functions/odbc)
