الانتقال إلى المحتوى الرئيسي
يتيح الاتصال بقواعد البيانات على خادم PostgreSQL بعيد. ويدعم عمليات القراءة والكتابة (استعلامات SELECT وINSERT) لتبادل البيانات بين ClickHouse وPostgreSQL. يوفّر وصولًا في الوقت الفعلي إلى قائمة الجداول وبنية الجداول على خادم PostgreSQL البعيد باستخدام استعلامَي SHOW TABLES وDESCRIBE TABLE. ويدعم تعديل بنية الجداول (ALTER TABLE ... ADD|DROP COLUMN). إذا جرى تعيين المَعلمة use_table_cache (انظر معلمات المحرك أدناه) إلى 1، فستُخزَّن بنية الجدول مؤقتًا ولن يُتحقق من حدوث أي تعديل عليها، ولكن يمكن تحديثها باستخدام استعلامَي DETACH وATTACH.

إنشاء قاعدة بيانات

CREATE DATABASE test_database
ENGINE = PostgreSQL('host:port', 'database', 'user', 'password'[, `schema`, `use_table_cache`]);
معلمات المحرّك
  • host:port — عنوان خادم PostgreSQL.
  • database — اسم قاعدة البيانات البعيدة.
  • user — مستخدم PostgreSQL.
  • password — كلمة مرور المستخدم.
  • schema — مخطط PostgreSQL.
  • use_table_cache — يحدّد ما إذا كانت بنية جدول قاعدة البيانات مخزنة مؤقتًا أم لا. اختياري. القيمة الافتراضية: 0.

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

PostgreSQLClickHouse
DATEDate
TIMESTAMPDateTime
REALFloat32
DOUBLEFloat64
DECIMAL, NUMERICDecimal (انظر الملاحظة أدناه)
SMALLINTInt16
INTEGERInt32
BIGINTInt64
SERIALUInt32
BIGSERIALUInt64
TEXT, CHARString
INTEGERNullable(Int32)
ARRAYArray
يُحوَّل numeric(p, 0) في PostgreSQL عندما تكون الدقة p أكبر من 76 (وهو الحد الأقصى الذي يدعمه Decimal256) — على سبيل المثال numeric(78, 0)، وهو يُستخدم عادةً لتخزين أعداد صحيحة بعرض 256 بت — إلى Int256 بدلًا من Decimal. وتُرفض القيم التي لا تقع ضمن نطاق Int256 مع ظهور error.

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

قاعدة بيانات في ClickHouse تتبادل البيانات مع خادم PostgreSQL:
CREATE DATABASE test_database
ENGINE = PostgreSQL('postgres1:5432', 'test_database', 'postgres', 'mysecretpassword', 'schema_name',1);
SHOW DATABASES;
┌─name──────────┐
│ default       │
│ test_database │
│ system        │
└───────────────┘
SHOW TABLES FROM test_database;
┌─name───────┐
│ test_table │
└────────────┘
قراءة البيانات من جدول PostgreSQL:
SELECT * FROM test_database.test_table;
┌─id─┬─value─┐
│  1 │     2 │
└────┴───────┘
كتابة البيانات في جدول PostgreSQL:
INSERT INTO test_database.test_table VALUES (3,4);
SELECT * FROM test_database.test_table;
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘
لنفترض أنه جرى تعديل بنية الجدول في PostgreSQL:
postgre> ALTER TABLE test_table ADD COLUMN data Text
بما أن المعلمة use_table_cache ضُبطت على 1 عند إنشاء قاعدة البيانات، فقد كانت بنية الجدول في ClickHouse مخزنة مؤقتًا، ولذلك لم تُعدَّل:
DESCRIBE TABLE test_database.test_table;
┌─name───┬─type──────────────┐
│ id     │ Nullable(Integer) │
│ value  │ Nullable(Integer) │
└────────┴───────────────────┘
بعد فصل الجدول ثم إعادة إرفاقه، تم تحديث البنية:
DETACH TABLE test_database.test_table;
ATTACH TABLE test_database.test_table;
DESCRIBE TABLE test_database.test_table;
┌─name───┬─type──────────────┐
│ id     │ Nullable(Integer) │
│ value  │ Nullable(Integer) │
│ data   │ Nullable(String)  │
└────────┴───────────────────┘
آخر تعديل في ٢٥ يونيو ٢٠٢٦