> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Источник словаря PostgreSQL

> Настройка PostgreSQL как источника словаря в ClickHouse.

Пример настроек:

<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`                            | Критерий отбора. Синтаксис условий такой же, как в предложении `WHERE` в PostgreSQL. Например, `id > 10 AND id < 20`. Необязательно.                                                                             |
| `invalidate_query`                 | Запрос для проверки состояния словаря. Необязательно. Подробнее см. в разделе [Обновление данных словаря с помощью LIFETIME](/docs/ru/reference/statements/create/dictionary/lifetime).                               |
| `background_reconnect`             | Переподключаться к реплике в фоновом режиме, если соединение не удалось. Необязательно.                                                                                                                          |
| `query`                            | Пользовательский запрос. Необязательно.                                                                                                                                                                          |
| `sslmode`                          | Режим TLS/SSL, передаваемый в `libpq`: `disable`, `allow`, `prefer`, `require`, `verify-ca` или `verify-full`. Если не задан, применяется значение `prefer` по умолчанию для `libpq`. Необязательно.             |
| `sslrootcert_pem`                  | Содержимое CA‑сертификата, по которому проверяется сертификат сервера PostgreSQL. Необязательно.                                                                                                                 |
| `sslcert_pem`                      | Содержимое клиентского сертификата для аутентификации на основе сертификатов. Необязательно.                                                                                                                     |
| `sslkey_pem`                       | Содержимое закрытого ключа, соответствующего `sslcert_pem`. Необязательно.                                                                                                                                       |
| `sslrootcert`, `sslcert`, `sslkey` | Те же учетные данные в виде путей к файлам на сервере. Допускается только для словаря, определенного в файле конфигурации сервера, или через именованную коллекцию, определенную в нем; см. ниже. Необязательно. |

<Note>
  Поля `table` и `where` нельзя использовать вместе с полем `query`. При этом должно быть указано либо поле `table`, либо поле `query`.
</Note>

<Note>
  `sslrootcert`, `sslcert` и `sslkey` указывают имена файлов, которые сервер открывает с использованием собственных привилегий, поэтому они допустимы только для словаря, определённого в файле конфигурации сервера, или через определённую в нём именованную коллекцию. Словарь, созданный запросом `CREATE DICTIONARY`, вместо этого должен передавать содержимое в `sslrootcert_pem`, `sslcert_pem` и `sslkey_pem`. Эти значения маскируются в журналах и запросах `SHOW` так же, как пароли.
</Note>
