你可以按这条路径自行操作,把它写成脚本,或交给 AI 智能体处理。如需查看控制台版本,请切换到 Cloud UI 视图。本页介绍如何仅通过命令行,使用 ClickHouse 命令行客户端 (安装 ClickHouse 命令行客户端:你还需要 或者,设置 创建该服务并保存返回结果;密码仅显示一次:返回结果中包含服务 ID、主机名以及可直接使用的连接字符串:提取本指南后续部分所需的信息:如果密码遗失,请使用 预配需要几分钟。持续轮询,直到状态变为 创建两个表,并通过 得益于 NVMe 存储,在 在同一区域创建一个服务并保存响应;密码仅会显示在创建时返回的响应中:等待其进入运行状态;ClickPipe 需要一个处于运行状态的目标端:若要改用现有服务,请将 在 ClickHouse 服务上创建一个 Postgres CDC ClickPipe,并将其指向 Managed Postgres 的主机名。该管道会先复制现有行,然后持续将后续变更同步到 ClickHouse:注意:管道在进入 直接通过命令行客户端向 ClickHouse 服务执行 SQL。首次调用会自动预配一个 Query API 端点和一个服务级作用域的 API 密钥:Postgres 中的新写入会持续复制。插入一行,然后轮询,直到计数达到 1,000,001 (通常不到一分钟) :这里特意不给 heredoc 加引号,这样 shell 就会在 SQL 到达 Postgres 之前先替换 请先删除 ClickPipe,再删除 Postgres 服务。删除服务会永久清除其中的所有数据:运行中的 ClickHouse 服务无法直接删除。请先将其停止,等待状态变为
clickhousectl) 和 psql 完成 ClickHouse Managed Postgres 的预配、数据加载、将数据复制到 ClickHouse 以及查询。命令均为非交互式;clickhousectl 可通过 --json 输出 JSON。前置条件
psql (PostgreSQL 客户端工具;在 macOS 上,使用 brew install libpq) 和 jq。写操作 (创建、删除) 需要通过 API key 身份验证;OAuth 登录仅支持只读访问:CLICKHOUSE_CLOUD_API_KEY 和 CLICKHOUSE_CLOUD_API_SECRET 环境变量。可使用 clickhousectl cloud auth status 进行验证;应看到一条作用域为 read/write 的条目。第 1 部分:创建 Postgres 并加载数据
创建 Postgres 服务
clickhousectl cloud postgres reset-password $PG_ID --generate 生成新密码。等待服务预配完成
running:加载示例数据
psql 插入 100 万条事件:c6gd.large (最小规格) 上插入 100 万行数据大约只需 7 秒。可通过查询验证;由于数据是用 random() 生成的,每次运行得到的行数可能会有所不同:第 2 部分:复制到 ClickHouse
创建 ClickHouse 服务
CH_ID 设置为 clickhousectl cloud service list 中显示的值,并将 CH_PASSWORD 设置为该服务 default 用户的密码,pg_clickhouse 步骤需要用到它。将表复制到 ClickHouse
- 复制表会落在 ClickHouse 服务的
default数据库中,名称由--table-mapping的目标决定 - publication 和 replication slot 会自动创建,其中 publication 的作用范围仅限于映射的表;传入
--publication-name可改用你自行管理的 publication - 请直接使用 Postgres 主机名;不支持通过 PgBouncer 进行复制
等待管道进入 Running 状态
Running 之前,会依次经过 Provisioning、Setup,以及 (对于较大的表) Snapshot 状态。在一个服务上创建的第一个管道通常需要约 4 分钟。Failed 和 InternalError 为终态:在 ClickHouse 中查询复制的数据
从 Postgres 查询 ClickHouse
pg_clickhouse 扩展可让 Postgres 作为事务型数据和分析型数据的统一查询层。获取 ClickHouse 的 HTTPS 主机名,然后通过 psql 配置该扩展:$CH_HOST 和 $CH_PASSWORD。现在,这些复制表会在 organization schema 中显示为 foreign tables;对它们发起的查询实际上会在 ClickHouse 中执行。在使用该数据集的 c6gd.large 上测得,通过 foreign tables 运行分析查询的速度可提升 6-9 倍 (例如,一个包含 5 个聚合的 GROUP BY:通过 ClickHouse 为 176 ms,本地执行为 1,133 ms;一个带聚合的 JOIN:298 ms,而本地为 2,764 ms) 。清理
stopped,然后再删除: