pg_clickhouse

从PostgreSQL中查询ClickHouse的接口

概览

扩展包名版本分类许可证语言
pg_clickhouse0.1.10OLAPApache-2.0C++
ID扩展名BinLibLoadCreateTrustReloc模式
2460pg_clickhouse-
相关扩展pg_duckdb duckdb_fdw citus columnar citus_columnar clickhouse_fdw postgres_fdw dblink

Release tag 0.1.10 still ships extension SQL version 0.1; source tarball vendors submodules.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.1.101817161514pg_clickhouse-
RPMPIGSTY0.1.101817161514pg_clickhouse_$v-
DEBPIGSTY0.1.101817161514postgresql-$v-clickhouse-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
u22.x86_64
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
u22.aarch64
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
u24.x86_64
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
u24.aarch64
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10
PIGSTY 0.1.10

构建

您可以使用 pig build 命令构建 pg_clickhouse 扩展的 RPM / DEB 包:

pig build pkg pg_clickhouse         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_clickhouse 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_clickhouse;          # 当前活跃 PG 版本安装
pig ext install -y pg_clickhouse -v 18  # PG 18
pig ext install -y pg_clickhouse -v 17  # PG 17
pig ext install -y pg_clickhouse -v 16  # PG 16
pig ext install -y pg_clickhouse -v 15  # PG 15
pig ext install -y pg_clickhouse -v 14  # PG 14
dnf install -y pg_clickhouse_18       # PG 18
dnf install -y pg_clickhouse_17       # PG 17
dnf install -y pg_clickhouse_16       # PG 16
dnf install -y pg_clickhouse_15       # PG 15
dnf install -y pg_clickhouse_14       # PG 14
apt install -y postgresql-18-clickhouse   # PG 18
apt install -y postgresql-17-clickhouse   # PG 17
apt install -y postgresql-16-clickhouse   # PG 16
apt install -y postgresql-15-clickhouse   # PG 15
apt install -y postgresql-14-clickhouse   # PG 14

预加载配置

shared_preload_libraries = 'pg_clickhouse';

创建扩展

CREATE EXTENSION pg_clickhouse;

用法

pg_clickhouse: PostgreSQL 的 ClickHouse 集成

pg_clickhouse 允许直接从 PostgreSQL 向 ClickHouse 执行分析查询,而无需重写 SQL。它支持 PostgreSQL 13+ 和 ClickHouse v23+。

入门

上游建议的起步方式主要有两种:

  • 使用已发布的 Docker 镜像 ghcr.io/clickhouse/pg_clickhouse:18
  • 通过 make / make install 从源码构建,或从 PGXN 安装

安装完成后启用扩展:

CREATE EXTENSION pg_clickhouse;

也可以安装到指定 schema:

CREATE SCHEMA ch;
CREATE EXTENSION pg_clickhouse WITH SCHEMA ch;

连接 ClickHouse

参考文档展示的标准流程如下:

CREATE SERVER taxi_srv
FOREIGN DATA WRAPPER clickhouse_fdw
OPTIONS (driver 'binary', host 'localhost', dbname 'taxi');

CREATE USER MAPPING FOR CURRENT_USER
SERVER taxi_srv
OPTIONS (user 'default');

CREATE SCHEMA taxi;
IMPORT FOREIGN SCHEMA taxi FROM SERVER taxi_srv INTO taxi;

文档中列出的服务器选项包括:

  • driver,必填,可选 binaryhttp
  • dbname
  • fetch_size
  • host
  • port

文档重点

README 将 pg_clickhouse 的核心定位为面向分析工作负载的透明下推:

  • 教程会带你把 PostgreSQL 连接到 ClickHouse 示例数据库,并查询导入后的表
  • 参考文档会说明扩展生命周期命令、外部服务器选项以及扩展暴露的 SQL 对象

项目 README 还给出了 TPC-H 基准示例,说明在什么情况下查询下推能显著缩短耗时。

运行说明

参考文档把版本分成两层:

  • 库版本,可通过 pgch_version()pg_get_loaded_modules() 查看
  • 扩展版本,由 PostgreSQL 系统目录和扩展升级脚本跟踪

小版本和大版本升级时,可能需要执行 ALTER EXTENSION pg_clickhouse UPDATE


最后修改 2026-04-14: update extension catalog (fa7cf58)