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

# Источник словаря «Executable File»

> Настройка исполняемого файла в качестве источника словаря в ClickHouse.

Работа с исполняемыми файлами зависит от [способа хранения словаря в памяти](/ru/reference/statements/create/dictionary/layouts/overview). Если словарь хранится с использованием `cache` и `complex_key_cache`, ClickHouse запрашивает нужные ключи, отправляя запрос в STDIN исполняемого файла. В противном случае ClickHouse запускает исполняемый файл и использует его вывод как данные словаря.

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

<Tabs>
  <Tab title="DDL">
    ```sql theme={null}
    SOURCE(EXECUTABLE(
        command 'cat /opt/dictionaries/os.tsv'
        format 'TabSeparated'
        implicit_key false
    ))
    ```
  </Tab>

  <Tab title="Файл конфигурации">
    ```xml theme={null}
    <source>
        <executable>
            <command>cat /opt/dictionaries/os.tsv</command>
            <format>TabSeparated</format>
            <implicit_key>false</implicit_key>
        </executable>
    </source>
    ```
  </Tab>
</Tabs>

Поля настроек:

| Настройка | Описание |
| - | - |
| `command` | Абсолютный путь к исполняемому файлу или имя файла (если каталог с командой находится в `PATH`). |
| `format` | Формат файла. Поддерживаются все форматы, описанные в разделе [Formats](/ru/reference/formats/index). |
| `command_termination_timeout` | Исполняемый скрипт должен содержать основной цикл с возможностью чтения и записи. После уничтожения словаря канал закрывается, и у исполняемого файла будет `command_termination_timeout` секунд на завершение работы, прежде чем ClickHouse отправит дочернему процессу сигнал SIGTERM. Указывается в секундах. Значение по умолчанию — `10`. Необязательно. |
| `command_read_timeout` | Тайм-аут чтения данных из stdout команды в миллисекундах. Значение по умолчанию — `10000`. Необязательно. |
| `command_write_timeout` | Тайм-аут записи данных в stdin команды в миллисекундах. Значение по умолчанию — `10000`. Необязательно. |
| `implicit_key` | Исполняемый файл-источник может возвращать только значения, а соответствие запрошенным ключам неявно определяется порядком строк в результате. Значение по умолчанию — `false`. |
| `execute_direct` | Если `execute_direct` = `1`, то `command` будет искаться в папке user\_scripts, заданной параметром [user\_scripts\_path](/ru/reference/settings/server-settings/settings/user#user_scripts_path). Дополнительные аргументы скрипта можно указать, разделяя их пробелами. Пример: `script_name arg1 arg2`. Если `execute_direct` = `0`, `command` передаётся как аргумент для `bin/sh -c`. Значение по умолчанию — `0`. Необязательно. |
| `send_chunk_header` | Определяет, нужно ли отправлять количество строк перед передачей фрагмента данных процессу. Значение по умолчанию — `false`. Необязательно. |

Этот источник словаря можно настроить только через XML-конфигурацию. Создание словарей с исполняемым источником через DDL отключено, поскольку в противном случае пользователь БД мог бы запускать произвольные бинарные файлы на узле ClickHouse.
