SELECT および INSERT クエリを実行できます。
構文
引数
| 引数 | 説明 |
|---|---|
host:port | PostgreSQL サーバーのアドレス。 |
database | リモートデータベースの名前。 |
table | リモートテーブルの名前。 |
user | PostgreSQL ユーザー。 |
password | ユーザーのパスワード。 |
schema | デフォルト以外のテーブルスキーマ。省略可能です。 |
on_conflict | 競合解決の戦略。例: ON CONFLICT DO NOTHING。省略可能です。 |
host と port は別々に指定する必要があります。この方法は本番環境に推奨されます。
戻り値
テーブル関数
postgresql(...) を、カラム名リスト付きのテーブル名と区別するには、INSERT クエリでキーワード FUNCTION または TABLE FUNCTION を使用する必要があります。以下の例を参照してください。実装の詳細
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 ではすべての行で同じ次元数の多次元配列しか許可されないため、注意してください。
| で列挙する必要があります。例:
0 です。
例
PeerDB を使用した Postgres データのレプリケーションまたは移行
テーブル関数に加えて、ClickHouse の PeerDB を使って、Postgres から ClickHouse への継続的なデータパイプラインを構築することもできます。PeerDB は、CDC (変更データキャプチャ) を使用して Postgres から ClickHouse にデータをレプリケートするために専用設計されたツールです。