pg_clickhouse
从PostgreSQL中查询ClickHouse的接口
仓库
ClickHouse/pg_clickhouse
https://github.com/ClickHouse/pg_clickhouse
源码
pg_clickhouse-0.2.0.tar.gz
pg_clickhouse-0.2.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_clickhouse | 0.2.0 | OLAP | Apache-2.0 | C++ |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2460 | pg_clickhouse | 否 | 是 | 是 | 是 | 否 | 是 | - |
| 相关扩展 | pg_duckdb duckdb_fdw citus columnar citus_columnar clickhouse_fdw postgres_fdw dblink |
|---|
release 0.2.0; SQL v0.2
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.2.0 | 1817161514 | pg_clickhouse | - |
| RPM | PIGSTY | 0.2.0 | 1817161514 | pg_clickhouse_$v | - |
| DEB | PIGSTY | 0.2.0 | 1817161514 | postgresql-$v-clickhouse | - |
构建
您可以使用 pig build 命令构建 pg_clickhouse 扩展的 RPM / DEB 包:
pig build pkg pg_clickhouse # 构建 RPM / DEB 包
安装
您可以直接安装 pg_clickhouse 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
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;
用法
来源:README,reference,tutorial,v0.2.0 release notes
pg_clickhouse 通过 clickhouse_fdw foreign data wrapper 在 PostgreSQL 中直接执行 ClickHouse 分析查询。上游文档说明它支持 PostgreSQL 13+ 与 ClickHouse 23+。
将 PostgreSQL 连接到 ClickHouse
CREATE EXTENSION pg_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;
上游记录的 server 选项包括:
driver:必填,取值为binary或httphostportdbnamefetch_size:HTTP 流式批大小,0表示禁用流式
user mapping 选项包括:
userpassword
常见操作
ALTER EXTENSION pg_clickhouse UPDATE;
ALTER EXTENSION pg_clickhouse UPDATE TO '0.2';
DROP SERVER taxi_srv CASCADE;
IMPORT FOREIGN SCHEMA 还支持 LIMIT TO (...) 与 EXCEPT (...)。参考文档特别提醒:导入的 mixed-case 标识符会在 PostgreSQL 中带双引号,查询时也必须显式加引号。
版本与下推说明
- 参考文档区分库版本和扩展版本;
pgch_version()是在v0.2.0中加入的。 - 仅补丁级别的发布可能只更新库文件,不需要执行
ALTER EXTENSION。 v0.2.0增加了数组、正则函数、split_part()、数组运算符与当前日期/时间表达式的更多下推能力,以及pg_clickhouse.pushdown_regex设置。
注意事项
- 上游将它定位为分析优先的扩展,路线图里更广泛的 DML 支持仍属于后续工作。
- 若需要完整示例,应按官方 tutorial 创建 ClickHouse
taxi数据库,通过IMPORT FOREIGN SCHEMA导入,再查询生成的 foreign tables。