1

我正在运行一个从各种来源收集数据的 Influx 数据库实例。有时,这些数据是不正确的,需要更正,否则以后的分析将失败和/或产生不正确的结果。但是,InfluxDB 的类 SQL 方言没有 UPDATE 功能,并且只能通过使用另一个 INSERT 替换具有相同时间戳的数据点来“更新”单个数据点。

为此,我正在寻找一种方法来批量编辑测量中的选定数据点,而不会中断可能在我编辑时插入新数据点的数据收集过程。这是我尝试过的:

  • 我可以使用例如SELECT * FROM measurement WHERE time > ...使用 HTTP API 查询测量的子集以进行编辑,我得到一个 JSON 文件,但是没有(明显的)方法来重新插入这个 JSON(在编辑它之后)并替换更正的测量。
  • 我可以使用导出整个数据库influx_inspect并重新导入它,但这太慢了。这样一来,200MB 的原始数据会被放大到 >1GB 的线路协议数据,这对于纠正 2-3 个数据点来说太过分了。

还有其他想法吗?我可以在文本编辑器中编写脚本和编辑内容,但我不适合为每个需要更正的数据点手动创建 INSERT。

4

2 回答 2

1

如果这是您需要做的很多事情,您可以查看 QuestDB(https://questdb.io/或Github 上的https://github.com/questdb/questdb)。它是一个超快的时序数据库,但支持传统的 SQL CRUD 操作。

于 2020-06-22T18:49:59.407 回答
0

由于似乎没有真正的解决方案,因此我编写了一个脚本来执行此操作。当心,它真的很快速'n'dirty,除了我自己的硬件之外未经测试,并且包含很多假设(例如,本地主机上的数据库,可用的Perl等)。

https://gist.github.com/jensb/9efa234b80024a0e335de760d9a4f3aa

于 2020-04-19T17:02:36.753 回答