跳转到主内容
跳转到主内容

可执行文件字典源

与可执行文件配合使用的方式取决于字典在内存中的存储方式。如果字典使用 cachecomplex_key_cache 存储,ClickHouse 会通过向可执行文件的 STDIN 发送请求来请求所需的键。否则,ClickHouse 会启动该可执行文件,并将其输出视为字典数据。

设置示例:

SOURCE(EXECUTABLE(
    command 'cat /opt/dictionaries/os.tsv'
    format 'TabSeparated'
    implicit_key false
))

设置项说明:

SettingDescription
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,则会在由 user_scripts_path 指定的 user_scripts 目录中搜索 command。可以使用空格分隔符指定额外的脚本参数。例如:script_name arg1 arg2。如果 execute_direct = 0command 会作为 bin/sh -c 的参数传入。默认值为 0。可选。
send_chunk_header控制在发送一个数据块之前,是否先发送其行数。默认值为 false。可选。

该字典源只能通过 XML 配置进行设置。通过 DDL 创建使用 executable 源的字典已被禁用;否则,数据库用户将能够在 ClickHouse 节点上执行任意二进制文件。