Skip to main content
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

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.
Los parámetros TLS/SSL se redirigen a libpq y pueden proporcionarse mediante una colección con nombre o como argumentos clave-valor adicionales: sslmode (disable, allow, prefer, require, verify-ca o verify-full), y los certificados y la clave, en una de dos formas. sslrootcert (certificado de CA), sslcert (certificado de cliente) y sslkey (clave privada de cliente) son rutas a archivos locales del servidor y solo se aceptan desde una colección con nombre definida en el archivo de configuración del servidor. En cambio, sslrootcert_pem, sslcert_pem y sslkey_pem aceptan el contenido literal del archivo correspondiente, se pueden especificar desde SQL (por ejemplo, ENGINE = PostgreSQL('host:port', 'database', 'user', 'password', sslmode = 'verify-full', sslrootcert_pem = '...')) y se ocultan en los registros y las consultas SHOW, igual que una contraseña. Cuando no se especifican, se aplican los valores predeterminados de libpq (sslmode=prefer).

Compatibilidad con tipos de datos

PostgreSQL numeric(p, 0) con una precisión p superior a 76 (el máximo admitido por Decimal256) —por ejemplo, numeric(78, 0), usado habitualmente para almacenar enteros de 256 bits— se asigna a Int256 en lugar de Decimal. Los valores que no caben en el rango de Int256 se rechazan con un error.

Ejemplos de uso

Base de datos en ClickHouse que intercambia datos con el servidor PostgreSQL:
Lectura de datos de la tabla de PostgreSQL:
Escritura de datos en la tabla de PostgreSQL:
Supongamos que se modificó la estructura de la tabla en PostgreSQL:
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ó:
Después de desvincular la tabla y volver a adjuntarla, la estructura se actualizó:
Última modificación el 14 de agosto de 2026