在 PostgreSQL 中,有
postgres_fdw
扩展,它允许将外部模式添加到您自己的数据库中,就像一个视图,可以从另一个 Postgres 获取数据,并在您自己的数据库中对其进行查询。
ClickHouse 是否有某种相同的功能?
例如 - 我最近将多个模式从一个 ClickHouse 实例迁移到另一个实例,但我有一个查询以
INSERT INTO SELECT
的方式插入一些数据,并且 SELECT 语句中的表的模式未迁移,所以我不能再直接查询了。
我想找到一些优雅的解决方案来保存相同的 INSERT INTO SELECT 逻辑,或者至少我不需要使用数据帧作为中间数据存储来从另一个数据库插入数据。我知道有一个
remote
命令可以直接查询另一个数据库,但据我了解,它需要在 SQL 中硬编码凭据,这不是作为我的代码处理它的最佳方法存储在 GitHub 中。也许可以用这个remote
但以另一种方式?
我有 ClickHouse 23.9。
您需要
PostgreSQL
表引擎。它在 ClickHouse 中创建一个表,充当 Postgres 中表的代理。
CREATE TABLE default.postgresql_table
(
`float_nullable` Nullable(Float32),
`str` String,
`int_id` Int32
)
ENGINE = PostgreSQL('localhost:5432', 'public', 'test', 'postges_user', 'postgres_password');
查看文档了解详细信息:https://clickhouse.com/docs/en/engines/table-engines/integrations/postgresql
我知道有一个远程命令可以直接查询另一个数据库,但据我了解,它需要在 SQL 中硬编码凭据
使用
remote
和 remoteSecure
表函数并与 named collections
结合使用
查看文档