> 文档中心 > ClickHouse导入数据注意事项

ClickHouse导入数据注意事项

接口向clickhouse导入数据时 导入条数总是不对

检查接口数据无问题 于是就检查了clickhouse表

最后发现是DDL语句有问题

CREATE TABLE 表格名(    `create_time` DateTime COMMENT '数据创建时间',    `fan_id` Int32 COMMENT '风机id',    ...    ...    ...    省略)ENGINE = ReplacingMergeTreePRIMARY KEY (create_time, fan_id)ORDER BY (create_time, fan_id)TTL create_time + toIntervalMonth(2)SETTINGS index_granularity = 8192

ENGINE = ReplacingMergeTree作用

  • 使用ORDER BY排序键,作为判断数据是否重复的唯一键
  • 只有在合并分区时,才会触发数据的去重逻辑
  • 删除重复数据,是以数据分区为单位。同一个数据分区的重复数据才会被删除,不同数据分区的重复数据仍会保留
  • 在进行数据去重时,由于已经基于ORDER BY排序,所以可以找到相邻的重复数据
  • 拓展

PRIMARY KEY作用

  • 设置时间和id为主键(只能存在一条创建时间和id一样的数据)
  • 继续录入主键一样的数据时clickhouse会自动合并

 TTL create_time + toIntervalMonth(2)作用

  • 自动删除表中超过两个月的数据
  • 拓展

SETTINGS index_granularity = 8192作用 

  • 作用看这里

 

主要问题出在 toIntervalMonth(2)这里

在测试数据时用的是两个月之前数据 所有怎么都导入不进去

库里保存2个月数据显然是不够的

我改为了oIntervalMonth(12)

OK成功数据录入