Influxdb 如何修复XDB中不一致的类型?
在XDB(1.5)中,我有一个表,其中字段的类型不一致。表中的大多数行都是整数,但有些行变成了字符串Influxdb 如何修复XDB中不一致的类型?,influxdb,Influxdb,在XDB(1.5)中,我有一个表,其中字段的类型不一致。表中的大多数行都是整数,但有些行变成了字符串 这怎么可能?我认为,一旦设置了字段的类型(在第一次插入时),任何输入错误的表插入都会失败 我现在该怎么办?如果返回并尝试覆盖不一致行中的数据,则会出现错误,表明字段是字符串 经过进一步研究,我发现: 对第一部分的答复: InfluxDB使用一个他们称为“分片”的系统——虽然我不知道具体细节,但我知道来自同一度量/表的数据可以跨多个不同的“分片”存储 根据XDB文档,同一个表中相同字段内的这些碎片
经过进一步研究,我发现: 对第一部分的答复: InfluxDB使用一个他们称为“分片”的系统——虽然我不知道具体细节,但我知道来自同一度量/表的数据可以跨多个不同的“分片”存储 根据XDB文档,同一个表中相同字段内的这些碎片之间的字段类型可能不同 对第2部分的答复: 为了解决这个问题,需要创建一个新表,下载所有数据,然后重新插入,同时确保插入的数据类型正确 如果你有一个标签改变了类型,变成了一个字段,这可能是特别难以修复的,上面的链接没有解决这个问题。要仅对标记或字段进行选择,可以在select语句中使用
tag\u name::tag
或field\u name::field
链接中建议的groupby*
子句是保留标记所必需的,但在我使用它时似乎会引起问题
我目前的解决方案是一个PHP脚本,它使用curl,下载点,将点分块,然后将点重新插入到新表中,确保插入的每个点都转换为新的统一类型,并正确插入
阻止未来问题的最好办法,就是不要让它们发生。我一直在寻找如何在所有情况下,在所有碎片上,为特定的测量表锁定字段类型
不幸的是,似乎不可能保证所有当前和未来碎片的100%类型一致性。“不要犯错误,因为这真的很难清理”似乎是XDB的工作方式。我编辑了这篇评论,从结构上回答了这个问题。随着我在管理XDB方面变得更加有效,我也将更新答案。