> ## 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.

# Source de dictionnaire PostgreSQL

> Configurer PostgreSQL comme source de dictionnaire dans ClickHouse.

Exemple de paramètres :

<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="Fichier de configuration">
    ```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 />

Champs des paramètres :

| Paramètre                          | Description                                                                                                                                                                                                                                              |
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host`                             | L’hôte du serveur PostgreSQL. Vous pouvez le spécifier pour toutes les répliques, ou pour chacune individuellement (dans `<replica>`).                                                                                                                   |
| `port`                             | Le port du serveur PostgreSQL. Vous pouvez le spécifier pour toutes les répliques, ou pour chacune individuellement (dans `<replica>`).                                                                                                                  |
| `user`                             | Nom de l’utilisateur PostgreSQL. Vous pouvez le spécifier pour toutes les répliques, ou pour chacune individuellement (dans `<replica>`).                                                                                                                |
| `password`                         | Mot de passe de l’utilisateur PostgreSQL. Vous pouvez le spécifier pour toutes les répliques, ou pour chacune individuellement (dans `<replica>`).                                                                                                       |
| `replica`                          | Section de configuration des répliques. Il peut y avoir plusieurs sections.                                                                                                                                                                              |
| `replica/host`                     | L’hôte PostgreSQL.                                                                                                                                                                                                                                       |
| `replica/port`                     | Le port PostgreSQL.                                                                                                                                                                                                                                      |
| `replica/priority`                 | La priorité de la réplique. Lors d’une tentative de connexion, ClickHouse parcourt les répliques par ordre de priorité. Plus le nombre est faible, plus la priorité est élevée.                                                                          |
| `db`                               | Nom de la base de données.                                                                                                                                                                                                                               |
| `table`                            | Nom de la table.                                                                                                                                                                                                                                         |
| `where`                            | Les critères de sélection. La syntaxe des conditions est la même que pour la clause `WHERE` dans PostgreSQL. Par exemple, `id > 10 AND id < 20`. Facultatif.                                                                                             |
| `invalidate_query`                 | Requête permettant de vérifier le statut du dictionnaire. Facultatif. Pour en savoir plus, consultez la section [Actualisation des données du dictionnaire à l’aide de LIFETIME](/fr/reference/statements/create/dictionary/lifetime).                   |
| `background_reconnect`             | Reconnexion à la réplique en arrière-plan en cas d’échec de la connexion. Facultatif.                                                                                                                                                                    |
| `query`                            | La requête personnalisée. Facultatif.                                                                                                                                                                                                                    |
| `sslmode`                          | Mode TLS/SSL transmis à `libpq` : `disable`, `allow`, `prefer`, `require`, `verify-ca` ou `verify-full`. S’il n’est pas défini, la valeur par défaut `prefer` de `libpq` s’applique. Facultatif.                                                         |
| `sslrootcert_pem`                  | Contenu du certificat d’AC utilisé pour vérifier le certificat du serveur PostgreSQL. Facultatif.                                                                                                                                                        |
| `sslcert_pem`                      | Contenu du certificat client, pour l’authentification basée sur certificat. Facultatif.                                                                                                                                                                  |
| `sslkey_pem`                       | Contenu de la clé privée associée à `sslcert_pem`. Facultatif.                                                                                                                                                                                           |
| `sslrootcert`, `sslcert`, `sslkey` | Les mêmes identifiants sous forme de chemins vers des fichiers sur le serveur. Autorisés uniquement pour un dictionnaire défini dans un fichier de configuration du serveur ou via une collection nommée qui y est définie, voir ci-dessous. Facultatif. |

<Note>
  Les champs `table` ou `where` ne peuvent pas être utilisés avec le champ `query`. L’un des champs `table` ou `query` doit être déclaré.
</Note>

<Note>
  `sslrootcert`, `sslcert` et `sslkey` désignent des fichiers que le serveur ouvre avec ses propres privilèges ; ils ne sont donc acceptés que pour un dictionnaire défini dans un fichier de configuration du serveur ou par l’intermédiaire d’une collection nommée qui y est définie. Un dictionnaire créé avec une requête `CREATE DICTIONARY` doit plutôt fournir leur contenu dans `sslrootcert_pem`, `sslcert_pem` et `sslkey_pem`. Ces valeurs sont masquées dans les logs et les requêtes `SHOW`, comme les mots de passe.
</Note>
