Skip to main content
リモートの PostgreSQL サーバーに格納されているデータに対して、SELECT および INSERT クエリを実行できます。

構文

引数

引数は named collections を使用して渡すこともできます。この場合、host と port は別々に指定する必要があります。この方法は本番環境に推奨されます。

戻り値

元の PostgreSQL テーブルと同じカラムを持つテーブルオブジェクト。
テーブル関数 postgresql(...) を、カラム名リスト付きのテーブル名と区別するには、INSERT クエリでキーワード FUNCTION または TABLE FUNCTION を使用する必要があります。以下の例を参照してください。

実装の詳細

PostgreSQL 側の SELECT クエリは、読み取り専用の PostgreSQL トランザクション内で COPY (SELECT ...) TO STDOUT として実行され、各 SELECT クエリの後にコミットされます。 =, !=, >, >=, <, <=, IN などの単純な WHERE 句は、PostgreSQL サーバー上で実行されます。 すべての JOIN、集計、ソート、IN [ array ] 条件、および LIMIT サンプリング制約は、PostgreSQL へのクエリが完了した後にのみ ClickHouse で実行されます。 PostgreSQL 側の INSERT クエリは、各 INSERT ステートメントの後に自動コミットされる PostgreSQL トランザクション内で、COPY "table_name" (field1, field2, ... fieldN) FROM STDIN として実行されます。 PostgreSQL の Array 型は ClickHouse の配列に変換されます。
PostgreSQL では、Integer[] のような配列データ型のカラムに、行ごとに次元数の異なる配列を含めることができますが、ClickHouse ではすべての行で同じ次元数の多次元配列しか許可されないため、注意してください。
複数のレプリカをサポートしており、| で列挙する必要があります。例:
または
PostgreSQL の Dictionary ソースで、レプリカの優先度をサポートしています。map 内の数値が大きいほど優先度は低くなります。最も高い優先度は 0 です。

例

PostgreSQL のテーブル:
通常の引数を使用してClickHouseからデータを選択する:
または、named collectionsを使用する方法もあります:
データの挿入:
非デフォルトのスキーマを使用する:

PeerDB を使用した Postgres データのレプリケーションまたは移行

テーブル関数に加えて、ClickHouse の PeerDB を使って、Postgres から ClickHouse への継続的なデータパイプラインを構築することもできます。PeerDB は、CDC (変更データキャプチャ) を使用して Postgres から ClickHouse にデータをレプリケートするために専用設計されたツールです。
最終更新日 2026年6月10日