الانتقال إلى المحتوى الرئيسي
يُرفِق جدولًا أو قاموسًا، على سبيل المثال عند نقل قاعدة بيانات إلى خادم آخر. الصيغة
ATTACH TABLE|DICTIONARY|DATABASE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster] ...
لا ينشئ هذا الاستعلام بيانات على القرص، بل يفترض أن البيانات موجودة بالفعل في المواقع المناسبة، ويضيف فقط معلومات عن الجدول أو القاموس أو قاعدة البيانات المحددة إلى الخادم. بعد تنفيذ استعلام ATTACH، سيصبح الخادم على علم بوجود الجدول أو القاموس أو قاعدة البيانات. إذا كان قد سبق فصل جدول (استعلام DETACH)، أي إن بنيته معروفة، فيمكنك استخدام الصيغة المختصرة من دون تعريف البنية.

إرفاق جدول موجود

الصياغة
ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
يُستخدم هذا الاستعلام عند تشغيل الخادم. يخزّن الخادم البيانات الوصفية للجداول في هيئة ملفات تحتوي على استعلامات ATTACH، ويشغّلها ببساطة عند بدء التشغيل (باستثناء بعض جداول النظام التي تُنشأ صراحةً على الخادم). إذا كان الجدول قد فُصل بشكل دائم، فلن يُعاد إرفاقه عند بدء تشغيل الخادم، لذا عليك استخدام استعلام ATTACH صراحةً.

إنشاء جدول جديد وإرفاق البيانات به

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

ينشئ هذا الاستعلام جدولًا جديدًا بالبنية المحددة، ويُرفق بيانات الجدول من الدليل المحدد داخل user_files. البنية
ATTACH TABLE name FROM 'path/to/data/' (col1 Type1, ...)
مثال
Query
DROP TABLE IF EXISTS test;
INSERT INTO TABLE FUNCTION file('01188_attach/test/data.TSV', 'TSV', 's String, n UInt8') VALUES ('test', 42);
ATTACH TABLE test FROM '01188_attach/test' (s String, n UInt8) ENGINE = File(TSV);
SELECT * FROM test;
Response
┌─s────┬──n─┐
│ test │ 42
└──────┴────┘

مع UUID جدول محدد

ينشئ هذا الاستعلام جدولًا جديدًا بالبنية المحددة ويُرفق البيانات من الجدول ذي الـ UUID المحدد. وهو مدعوم من محرك قاعدة البيانات Atomic. بنية الجملة
ATTACH TABLE name UUID '<uuid>' (col1 Type1, ...)

إرفاق جدول MergeTree كـ ReplicatedMergeTree

يتيح ذلك إرفاق جدول MergeTree غير مكرّر كـ ReplicatedMergeTree. سيُنشأ جدول ReplicatedMergeTree باستخدام قيم إعدادَي default_replica_path وdefault_replica_name. ومن الممكن أيضًا إرفاق جدول مكرّر كجدول MergeTree عادي. لاحظ أن بيانات الجدول في ZooKeeper لا تتأثر بهذا الاستعلام. وهذا يعني أنه يجب عليك إضافة البيانات الوصفية في ZooKeeper باستخدام SYSTEM RESTORE REPLICA أو مسحها باستخدام SYSTEM DROP REPLICA ... FROM ZKPATH ... بعد الإرفاق. إذا كنت تحاول إضافة نسخة متماثلة إلى جدول ReplicatedMergeTree موجود، فضع في اعتبارك أن جميع البيانات المحلية في جدول MergeTree المحوَّل ستصبح detached. البنية
ATTACH TABLE [db.]name AS [NOT] REPLICATED
تحويل الجدول إلى جدول Replicated
DETACH TABLE test;
ATTACH TABLE test AS REPLICATED;
SYSTEM RESTORE REPLICA test;
تحويل الجدول إلى جدول غير مكرّر احصل على مسار ZooKeeper واسم النسخة المتماثلة للجدول:
Query
SELECT replica_name, zookeeper_path FROM system.replicas WHERE table='test';
Response
┌─replica_name─┬─zookeeper_path─────────────────────────────────────────────┐
│ r1           │ /clickhouse/tables/401e6a1f-9bf2-41a3-a900-abb7e94dff98/s1 │
└──────────────┴────────────────────────────────────────────────────────────┘
ألحِق الجدول كجدول غير مُكرَّر، واحذف بيانات النسخة المتماثلة من ZooKeeper:
Query
DETACH TABLE test;
ATTACH TABLE test AS NOT REPLICATED;
SYSTEM DROP REPLICA 'r1' FROM ZKPATH '/clickhouse/tables/401e6a1f-9bf2-41a3-a900-abb7e94dff98/s1';

إرفاق قاموس موجود

يُرفق قاموسًا فُصل سابقًا. الصيغة
ATTACH DICTIONARY [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]

إرفاق قاعدة بيانات موجودة

يُرفِق قاعدة بيانات سبق فصلها. الصيغة
ATTACH DATABASE [IF NOT EXISTS] name [ENGINE=<database engine>] [ON CLUSTER cluster]
آخر تعديل في ٢٥ يونيو ٢٠٢٦