Saltar al contenido principal
Permite conectarse a bases de datos en un servidor PostgreSQL remoto. Admite operaciones de lectura y escritura (consultas SELECT e INSERT) para intercambiar datos entre ClickHouse y PostgreSQL. Proporciona acceso en tiempo real a la lista y a la estructura de las tablas del PostgreSQL remoto mediante las consultas SHOW TABLES y DESCRIBE TABLE. Admite modificaciones en la estructura de la tabla (ALTER TABLE ... ADD|DROP COLUMN). Si el parámetro use_table_cache (consulte Parámetros del motor más abajo) está configurado en 1, la estructura de la tabla se almacena en caché y no se comprueba si se ha modificado, pero puede actualizarse con las consultas DETACH y ATTACH.

Crear una base de datos

CREATE DATABASE test_database
ENGINE = PostgreSQL('host:port', 'database', 'user', 'password'[, `schema`, `use_table_cache`]);
Parámetros del motor
  • host:port — Dirección del servidor PostgreSQL.
  • database — Nombre de la base de datos remota.
  • user — Usuario de PostgreSQL.
  • password — Contraseña del usuario.
  • schema — Esquema de PostgreSQL.
  • use_table_cache — Indica si la estructura de la tabla de la base de datos se almacena en caché. Opcional. Valor predeterminado: 0.

Compatibilidad con tipos de datos

PostgreSQLClickHouse
DATEDate
TIMESTAMPDateTime
REALFloat32
DOUBLEFloat64
DECIMAL, NUMERICDecimal
SMALLINTInt16
INTEGERInt32
BIGINTInt64
SERIALUInt32
BIGSERIALUInt64
TEXT, CHARString
INTEGERNullable(Int32)
ARRAYArray

Ejemplos de uso

Base de datos en ClickHouse que intercambia datos con el servidor 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 │
└────────────┘
Lectura de datos de la tabla de PostgreSQL:
SELECT * FROM test_database.test_table;
┌─id─┬─value─┐
│  1 │     2 │
└────┴───────┘
Escritura de datos en la tabla de PostgreSQL:
INSERT INTO test_database.test_table VALUES (3,4);
SELECT * FROM test_database.test_table;
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘
Supongamos que se modificó la estructura de la tabla en PostgreSQL:
postgre> ALTER TABLE test_table ADD COLUMN data Text
Como el parámetro use_table_cache se estableció en 1 cuando se creó la base de datos, la estructura de la tabla en ClickHouse se almacenó en caché y, por lo tanto, no se modificó:
DESCRIBE TABLE test_database.test_table;
┌─name───┬─type──────────────┐
│ id     │ Nullable(Integer) │
│ value  │ Nullable(Integer) │
└────────┴───────────────────┘
Después de desvincular la tabla y volver a adjuntarla, la estructura se actualizó:
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)  │
└────────┴───────────────────┘
Última modificación el 10 de junio de 2026