有没有什么好的方法可以批量导入未排序的数据到QuestDB?

Is there a good way to import unsorted data into QuestDB in bulk?

我有一个 100GB 的数据文件,其中的传感器读数跨越了几周。时间戳不按严格的时间顺序排列,我想将数据批量加载到 QuestDB 中。顺序不是完全随机的,但存在最多迟到三分钟的偏差,其中有些行迟到了 3 分钟。 有没有一种有效的方法可以像这样进行批量加载并确保数据同时按时间顺序排列?

最有效的方法是分三步走

  1. 导入无序数据集,你可以通过curl来完成:

    curl -F data=@unordered-data.csv 'http://localhost:9000/imp'
    
  2. 使用导入数据的架构创建 table 并应用分区 战略。这 如果自动检测时间戳失败,timestamp 列可以转换为 timestamp

    CREATE TABLE ordered AS (
    SELECT
      cast(timestamp AS timestamp) timestamp,
      col1,
      col2
    FROM 'unordered-data.csv' WHERE 1 != 1
    ) timestamp(timestamp) PARTITION BY DAY;
    
  3. 将无序记录插入分区 table 并提供 lagbatch 尺寸:

    INSERT batch 100000 lag 180000000 INTO ordered
    SELECT
      cast(timestamp AS timestamp) timestamp,
      col1,
      col2
    FROM 'unordered-data.csv';
    

要确认 table 已排序,可以使用 isOrdered() 函数:

select isOrdered(timestamp) from ordered
isOrdered
true

CSV import documentation

上有更多关于以这种方式加载数据的信息
  • lag 在您的情况下可能大约需要 3 分钟,这是记录的预期延迟
  • batch是一次批处理的记录数