跳转到主要内容
使用可执行文件的方式取决于字典在内存中的存储方式。如果字典使用 cachecomplex_key_cache 存储,ClickHouse 会通过向可执行文件的 STDIN 发送请求来获取所需的键。否则,ClickHouse 会启动该可执行文件,并将其输出视为字典数据。 设置示例:
SOURCE(EXECUTABLE(
    command 'cat /opt/dictionaries/os.tsv'
    format 'TabSeparated'
    implicit_key false
))
设置字段:
设置描述
command可执行文件的绝对路径,或文件名 (如果命令所在目录在 PATH 中) 。
format文件格式。支持格式中描述的所有格式。
command_termination_timeout可执行脚本应包含一个主读写循环。字典销毁后,管道会被关闭;在 ClickHouse 向子进程发送 SIGTERM 信号之前,可执行文件有 command_termination_timeout 秒的时间退出。以秒为单位指定。默认值为 10。可选。
command_read_timeout从命令 stdout 读取数据的超时时间,单位为毫秒。默认值为 10000。可选。
command_write_timeout向命令 stdin 写入数据的超时时间,单位为毫秒。默认值为 10000。可选。
implicit_key可执行源文件可以只返回值,而与请求键之间的对应关系由结果中各行的顺序隐式确定。默认值为 false
execute_direct如果 execute_direct = 1,则会在 user_scripts_path 指定的 user_scripts 文件夹中查找 command。可使用空白分隔符指定额外的脚本参数。例如:script_name arg1 arg2。如果 execute_direct = 0,则 command 会作为参数传递给 bin/sh -c。默认值为 0。可选。
send_chunk_header控制在向进程发送一个数据块之前,是否先发送行数。默认值为 false。可选。
该字典源只能通过 XML 配置。已禁用通过 DDL 创建使用可执行源的字典;否则,DB 用户将能够在 ClickHouse 节点上执行任意二进制文件。
最后修改于 2026年6月10日