ClickHouse执行CREATE TABLE建表语句报语法错误 新手求助解决方案
问题定位
你写的建表语句存在3处语法/规则错误:
- 二级跳数索引语法缺失必要参数:ClickHouse的自定义索引必须声明索引类型
TYPE和粒度GRANULARITY,不能仅指定索引名和关联字段 ENGINE = MergeTree()后多了多余的逗号,打断了建表语句的结构解析- 字段声明
DEFAULT NULL但未显式加Nullable类型修饰,ClickHouse默认字段不允许存储NULL,空值字段必须显式标记为Nullable类型
修正后建表语句
CREATE TABLE rapidTax.mutualFund ( `id` String, `mutualFundId` Nullable(String) DEFAULT NULL, `date` Nullable(Date) DEFAULT NULL, `nav` Nullable(Float32) DEFAULT NULL, INDEX mutualFundIdIndex mutualFundId TYPE set(0) GRANULARITY 1, INDEX dateIndex date TYPE minmax GRANULARITY 1 ) ENGINE = MergeTree() PRIMARY KEY id
修正说明
- 用
String替代varchar(255)是ClickHouse的最佳实践,varchar本质是String的别名,长度限制不会生效 - 字符串字段索引选
set类型,日期字段索引选minmax类型可适配常见查询场景,你也可以根据业务需要更换为bloom_filter等其他索引类型 GRANULARITY参数可根据你的数据块大小调整,1代表每个颗粒块都生成索引
内容的提问来源于stack exchange,提问作者Rapid Tax
相关产品推荐
相关产品推荐

