跳转到主要内容
ClickHouse 可以在启动时根据服务器配置运行任意 SQL 查询。这对于执行迁移或自动创建 schema 很有帮助。
<clickhouse>
    <startup_scripts>
        <throw_on_error>false</throw_on_error>
        <scripts>
            <query>CREATE ROLE OR REPLACE test_role</query>
        </scripts>
        <scripts>
            <query>CREATE TABLE TestTable (id UInt64) ENGINE=TinyLog</query>
            <condition>SELECT 1;</condition>
        </scripts>
        <scripts>
            <query>CREATE DICTIONARY test_dict (...) SOURCE(CLICKHOUSE(...))</query>
            <user>default</user>
        </scripts>
    </startup_scripts>
</clickhouse>
ClickHouse 会按指定顺序依次执行 startup_scripts 中的所有查询。即使其中某个查询失败,也不会中断后续查询的执行。不过,如果将 throw_on_error 设置为 true, 那么只要脚本执行期间发生错误,服务器就不会启动。 你可以在配置中指定条件查询。在这种情况下,只有当条件查询返回值 1true 时,对应的查询才会执行。
如果条件查询返回的值既不是 1 也不是 true,则结果会被视为 false,对应的查询也不会执行。
最后修改于 2026年6月10日