Pular para o conteúdo principal
Permite conectar-se a bancos de dados em um servidor PostgreSQL remoto. Suporta operações de leitura e escrita (consultas SELECT e INSERT) para troca de dados entre o ClickHouse e o PostgreSQL. Fornece acesso em tempo real à lista e à estrutura das tabelas no PostgreSQL remoto por meio das consultas SHOW TABLES e DESCRIBE TABLE. Suporta alterações na estrutura da tabela (ALTER TABLE ... ADD|DROP COLUMN). Se o parâmetro use_table_cache (consulte Parâmetros do mecanismo abaixo) estiver definido como 1, a estrutura da tabela será armazenada em cache e não será verificada em busca de alterações, mas poderá ser atualizada com as consultas DETACH e ATTACH.

Criar um banco de dados

CREATE DATABASE test_database
ENGINE = PostgreSQL('host:port', 'database', 'user', 'password'[, `schema`, `use_table_cache`]);
Parâmetros do mecanismo
  • host:port — Endereço do servidor PostgreSQL.
  • database — Nome do banco de dados remoto.
  • user — Usuário do PostgreSQL.
  • password — Senha do usuário.
  • schema — Esquema do PostgreSQL.
  • use_table_cache — Define se a estrutura da tabela do banco de dados é armazenada em cache ou não. Opcional. Valor padrão: 0.

Suporte a tipos de dados

PostgreSQLClickHouse
DATEDate
TIMESTAMPDateTime
REALFloat32
DOUBLEFloat64
DECIMAL, NUMERICDecimal (veja a nota abaixo)
SMALLINTInt16
INTEGERInt32
BIGINTInt64
SERIALUInt32
BIGSERIALUInt64
TEXT, CHARString
INTEGERNullable(Int32)
ARRAYArray
numeric(p, 0) no PostgreSQL, com precisão p maior que 76 (o máximo suportado por Decimal256) — por exemplo, numeric(78, 0), comumente usado para armazenar inteiros de 256 bits — é mapeado para Int256 em vez de Decimal. Valores que não cabem no intervalo de Int256 são rejeitados com um erro.

Exemplos de uso

Banco de dados no ClickHouse, trocando dados com o 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 │
└────────────┘
Lendo dados da tabela do PostgreSQL:
SELECT * FROM test_database.test_table;
┌─id─┬─value─┐
│  1 │     2 │
└────┴───────┘
Gravando dados na tabela do PostgreSQL:
INSERT INTO test_database.test_table VALUES (3,4);
SELECT * FROM test_database.test_table;
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘
Considere que a estrutura da tabela foi alterada no PostgreSQL:
postgre> ALTER TABLE test_table ADD COLUMN data Text
Como o parâmetro use_table_cache foi definido como 1 quando o banco de dados foi criado, a estrutura da tabela no ClickHouse ficou armazenada em cache e, por isso, não foi modificada:
DESCRIBE TABLE test_database.test_table;
┌─name───┬─type──────────────┐
│ id     │ Nullable(Integer) │
│ value  │ Nullable(Integer) │
└────────┴───────────────────┘
Depois de desanexar a tabela e anexá-la novamente, a estrutura foi atualizada:
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 modificação em 25 de junho de 2026