> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# PostgreSQL Dictionary ソース

> ClickHouse で PostgreSQL を Dictionary ソースとして設定します。

設定例:

<Tabs>
  <Tab title="DDL">
    ```sql theme={null}
    SOURCE(POSTGRESQL(
        port 5432
        host 'postgresql-hostname'
        user 'postgres_user'
        password 'postgres_password'
        db 'db_name'
        table 'table_name'
        replica(host 'example01-1' port 5432 priority 1)
        replica(host 'example01-2' port 5432 priority 2)
        where 'id=10'
        invalidate_query 'SQL_QUERY'
        query 'SELECT id, value_1, value_2 FROM db_name.table_name'
    ))
    ```
  </Tab>

  <Tab title="設定ファイル">
    ```xml theme={null}
    <source>
      <postgresql>
          <host>postgresql-hostname</hoat>
          <port>5432</port>
          <user>clickhouse</user>
          <password>qwerty</password>
          <db>db_name</db>
          <table>table_name</table>
          <where>id=10</where>
          <invalidate_query>SQL_QUERY</invalidate_query>
          <query>SELECT id, value_1, value_2 FROM db_name.table_name</query>
      </postgresql>
    </source>
    ```
  </Tab>
</Tabs>

<br />

設定フィールド:

| 設定                                 | 説明                                                                                                                                                   |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host`                             | PostgreSQL サーバーのホストです。すべてのレプリカに対して指定することも、各レプリカごとに個別に指定することもできます (`<replica>` 内) 。                                                                   |
| `port`                             | PostgreSQL サーバーのポートです。すべてのレプリカに対して指定することも、各レプリカごとに個別に指定することもできます (`<replica>` 内) 。                                                                   |
| `user`                             | PostgreSQL ユーザー名です。すべてのレプリカに対して指定することも、各レプリカごとに個別に指定することもできます (`<replica>` 内) 。                                                                      |
| `password`                         | PostgreSQL ユーザーのパスワードです。すべてのレプリカに対して指定することも、各レプリカごとに個別に指定することもできます (`<replica>` 内) 。                                                                 |
| `replica`                          | レプリカ設定のセクションです。複数指定できます。                                                                                                                             |
| `replica/host`                     | PostgreSQL のホストです。                                                                                                                                   |
| `replica/port`                     | PostgreSQL のポートです。                                                                                                                                   |
| `replica/priority`                 | レプリカの優先度です。接続を試みる際、ClickHouse は優先度順にレプリカをたどります。数値が小さいほど優先度は高くなります。                                                                                   |
| `db`                               | データベース名です。                                                                                                                                           |
| `table`                            | テーブル名です。                                                                                                                                             |
| `where`                            | 選択条件です。条件の構文は PostgreSQL の `WHERE` 句と同じです。たとえば、`id > 10 AND id < 20` です。省略可能です。                                                                      |
| `invalidate_query`                 | Dictionary の状態確認用クエリです。省略可能です。詳しくは、[LIFETIME を使用した Dictionary データの更新](/ja/reference/statements/create/dictionary/lifetime) セクションを参照してください。           |
| `background_reconnect`             | 接続に失敗した場合、バックグラウンドでレプリカに再接続します。省略可能です。                                                                                                               |
| `query`                            | カスタムクエリです。省略可能です。                                                                                                                                    |
| `sslmode`                          | `libpq` に渡す TLS/SSL モードです。`disable`、`allow`、`prefer`、`require`、`verify-ca`、`verify-full` を指定できます。未設定の場合は、`libpq` のデフォルト値である `prefer` が適用されます。省略可能です。 |
| `sslrootcert_pem`                  | PostgreSQL サーバー証明書の検証に使用する CA 証明書の内容です。省略可能です。                                                                                                       |
| `sslcert_pem`                      | 証明書ベース認証に使用するクライアント証明書の内容です。省略可能です。                                                                                                                  |
| `sslkey_pem`                       | `sslcert_pem` に対応する秘密鍵の内容です。省略可能です。                                                                                                                  |
| `sslrootcert`, `sslcert`, `sslkey` | 同じ認証情報をサーバー上のファイルへのパスとして指定します。サーバー設定ファイルで定義された Dictionary、またはそこで定義された named collection でのみ使用できます。以下を参照してください。省略可能です。                                 |

<Note>
  `table` または `where` フィールドは、`query` フィールドと併用できません。また、`table` または `query` のいずれかを指定する必要があります。
</Note>

<Note>
  `sslrootcert`、`sslcert`、`sslkey` はサーバー自身の権限で開かれるファイルを指定するため、サーバー設定ファイルで定義された Dictionary、またはそこで定義された named collection でのみ使用できます。`CREATE DICTIONARY` クエリで作成した Dictionary では、代わりに `sslrootcert_pem`、`sslcert_pem`、`sslkey_pem` にその内容を渡す必要があります。これらの値はパスワードと同様に、ログおよび `SHOW` クエリではマスクされます。
</Note>
