Influxdb 如何修复XDB中不一致的类型?

Influxdb 如何修复XDB中不一致的类型?,influxdb,Influxdb,在XDB(1.5)中,我有一个表,其中字段的类型不一致。表中的大多数行都是整数,但有些行变成了字符串 这怎么可能?我认为,一旦设置了字段的类型(在第一次插入时),任何输入错误的表插入都会失败 我现在该怎么办?如果返回并尝试覆盖不一致行中的数据,则会出现错误,表明字段是字符串 经过进一步研究,我发现: 对第一部分的答复: InfluxDB使用一个他们称为“分片”的系统——虽然我不知道具体细节,但我知道来自同一度量/表的数据可以跨多个不同的“分片”存储 根据XDB文档,同一个表中相同字段内的这些碎片

在XDB(1.5)中,我有一个表,其中字段的类型不一致。表中的大多数行都是整数,但有些行变成了字符串

  • 这怎么可能?我认为,一旦设置了字段的类型(在第一次插入时),任何输入错误的表插入都会失败

  • 我现在该怎么办?如果返回并尝试覆盖不一致行中的数据,则会出现错误,表明字段是字符串


  • 经过进一步研究,我发现:

    对第一部分的答复:

    InfluxDB使用一个他们称为“分片”的系统——虽然我不知道具体细节,但我知道来自同一度量/表的数据可以跨多个不同的“分片”存储

    根据XDB文档,同一个表中相同字段内的这些碎片之间的字段类型可能不同

    对第2部分的答复:

    为了解决这个问题,需要创建一个新表,下载所有数据,然后重新插入,同时确保插入的数据类型正确

    如果你有一个标签改变了类型,变成了一个字段,这可能是特别难以修复的,上面的链接没有解决这个问题。要仅对标记或字段进行选择,可以在select语句中使用
    tag\u name::tag
    field\u name::field

    链接中建议的
    groupby*
    子句是保留标记所必需的,但在我使用它时似乎会引起问题

    我目前的解决方案是一个PHP脚本,它使用curl,下载点,将点分块,然后将点重新插入到新表中,确保插入的每个点都转换为新的统一类型,并正确插入

    阻止未来问题的最好办法,就是不要让它们发生。我一直在寻找如何在所有情况下,在所有碎片上,为特定的测量表锁定字段类型


    不幸的是,似乎不可能保证所有当前和未来碎片的100%类型一致性。“不要犯错误,因为这真的很难清理”似乎是XDB的工作方式。

    我编辑了这篇评论,从结构上回答了这个问题。随着我在管理XDB方面变得更加有效,我也将更新答案。