Работа с исполняемыми файлами зависит от способа хранения словаря в памяти. Если словарь хранится с использованием cache и complex_key_cache, ClickHouse запрашивает нужные ключи, отправляя запрос в STDIN исполняемого файла. В противном случае ClickHouse запускает исполняемый файл и использует его вывод как данные словаря.
Пример настроек:
SOURCE(EXECUTABLE(
command 'cat /opt/dictionaries/os.tsv'
format 'TabSeparated'
implicit_key false
))<source>
<executable>
<command>cat /opt/dictionaries/os.tsv</command>
<format>TabSeparated</format>
<implicit_key>false</implicit_key>
</executable>
</source>Поля настроек:
| Настройка | Описание |
|---|---|
command |
Абсолютный путь к исполняемому файлу или имя файла (если каталог с командой находится в PATH). |
format |
Формат файла. Поддерживаются все форматы, описанные в разделе Formats. |
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. Дополнительные аргументы скрипта можно указать, разделяя их пробелами. Пример: script_name arg1 arg2. Если execute_direct = 0, command передаётся как аргумент для bin/sh -c. Значение по умолчанию — 0. Необязательно. |
send_chunk_header |
Определяет, нужно ли отправлять количество строк перед передачей фрагмента данных процессу. Значение по умолчанию — false. Необязательно. |
Этот источник словаря можно настроить только через XML-конфигурацию. Создание словарей с исполняемым источником через DDL отключено, поскольку в противном случае пользователь БД мог бы запускать произвольные бинарные файлы на узле ClickHouse.