Skip to main content
この方法は、自分で進めても、スクリプト化しても、AI Agent に任せてもかまいません。コンソール版を使う場合は、Cloud UI 表示に切り替えてください。このページでは、ClickHouse CLI (clickhousectl) と psql を使って、ClickHouse Managed Postgres のプロビジョニング、データの読み込み、ClickHouse へのレプリケーション、クエリの実行を、すべてコマンドラインから行う方法を説明します。コマンドは非対話型で、clickhousectl--json を指定すると JSON を出力します。

前提条件

ClickHouse CLIをインストールします:
psql (PostgreSQL client ツール。macOS では brew install libpq) と jq も必要です。書き込み操作 (作成、削除) には API key 認証 が必要です。OAuth ログインは読み取り専用です:
または、環境変数 CLICKHOUSE_CLOUD_API_KEYCLICKHOUSE_CLOUD_API_SECRET を設定します。clickhousectl cloud auth status で確認し、スコープが read/write のエントリが表示されることを確認してください。

第1部: Postgresを作成し、データを読み込む

Postgresサービスを作成する

サービスを作成し、レスポンスを保存します。パスワードは一度しか表示されません:
レスポンスには、サービス ID、ホスト名、すぐに使える接続文字列が含まれます。
このガイドの以降で必要になる情報を抽出します:
パスワードを紛失した場合は、clickhousectl cloud postgres reset-password $PG_ID --generate で新しいパスワードを生成します。

サービスの Provisioning が完了するまで待機する

Provisioning には数分かかります。状態が running になるまでポーリングしてください:

サンプルデータを読み込む

2 つのテーブルを作成し、psql を使って 100 万件のイベントを挿入します:
NVMeストレージにより、100万行の insert は c6gd.large (最小サイズ) で約7秒で完了します。クエリで確認してください。データは random() で生成されるため、行数は実行のたびに異なります。

第2部: ClickHouse にレプリケートする

ClickHouse サービスを作成する

同じリージョンにサービスを作成し、レスポンスを保存します。パスワードは作成時のレスポンスにのみ表示されます。
稼働状態になるまで待機してください。ClickPipe には稼働中の宛先が必要です:
代わりに既存のサービスを使用する場合は、clickhousectl cloud service list で取得した CH_ID を設定し、CH_PASSWORD にはその default ユーザーのパスワードを設定します。これは pg_clickhouse のステップで必要です。

テーブルを ClickHouse にレプリケートする

ClickHouse サービス 上に、Managed Postgres の ホスト名 を指定した Postgres CDC ClickPipe を作成します。このパイプは既存の行をコピーし、その後も継続的な変更に合わせて ClickHouse を同期した状態に保ちます。
注意:
  • レプリケートテーブルは ClickHouse サービス 上の default データベースに作成され、名前は --table-mapping のターゲットで指定したものになります
  • publicationreplication slot は自動的に作成され、publication の対象はマップされたテーブルに限定されます。自分で管理するものを使う場合は --publication-name を指定してください
  • Postgres の ホスト名 は直接指定してください。PgBouncer 経由のレプリケーションはサポートされていません

パイプがRunningになるまで待機します

パイプはRunningに到達するまでに、ProvisioningSetup、 (大きなテーブルの場合は) Snapshotを経由します。サービス上の最初のパイプでは、これに約4分かかります。FailedInternalErrorは終端状態です:

ClickHouse でレプリケートされたデータにクエリを実行する

CLI から ClickHouse サービスに直接 SQL を実行します。最初の呼び出しで、Query API エンドポイントとサービス スコープの API キーが自動的に作成されます:
Postgres への新しい書き込みは継続的にレプリケートされます。1 行を挿入し、件数が 1,000,001 に達するまでポーリングしてください (通常は 1 分未満です) :

Postgres から ClickHouse をクエリする

pg_clickhouse 拡張機能を使うと、Postgres をトランザクションデータと分析データの両方に対応する統合クエリレイヤーとして利用できます。ClickHouse の HTTPS ホスト名を取得し、psql でこの拡張機能を設定します。
ヒアドキュメントは意図的にクォートしていないため、SQL が Postgres に届く前に、シェルが $CH_HOST$CH_PASSWORD を展開します。これで、レプリケートテーブルが organization スキーマ内の外部テーブルとして参照できるようになり、それらに対するクエリは ClickHouse で実行されます。このデータセットを c6gd.large で測定したところ、分析クエリは外部テーブル経由のほうが 6~9 倍高速でした (たとえば、5 つの集計を含む GROUP BY は ClickHouse 経由で 176 ms、ローカルでは 1,133 ms、集計を伴う JOIN は 298 ms、ローカルでは 2,764 ms) 。

クリーンアップ

まず ClickPipe を削除し、次に Postgres サービスを削除します。サービスを削除すると、そのサービス内のすべてのデータが完全に削除されます。
稼働中の ClickHouse サービス は直接削除できません。いったん停止し、stopped になるのを待ってから削除してください。
最終更新日 2026年7月24日