有没有什么好的方法可以批量导入未排序的数据到QuestDB?
Is there a good way to import unsorted data into QuestDB in bulk?
我有一个 100GB 的数据文件,其中的传感器读数跨越了几周。时间戳不按严格的时间顺序排列,我想将数据批量加载到 QuestDB 中。顺序不是完全随机的,但存在最多迟到三分钟的偏差,其中有些行迟到了 3 分钟。
有没有一种有效的方法可以像这样进行批量加载并确保数据同时按时间顺序排列?
最有效的方法是分三步走
导入无序数据集,你可以通过curl来完成:
curl -F data=@unordered-data.csv 'http://localhost:9000/imp'
使用导入数据的架构创建 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;
将无序记录插入分区 table 并提供 lag
和 batch
尺寸:
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
上有更多关于以这种方式加载数据的信息
lag
在您的情况下可能大约需要 3 分钟,这是记录的预期延迟
batch
是一次批处理的记录数
我有一个 100GB 的数据文件,其中的传感器读数跨越了几周。时间戳不按严格的时间顺序排列,我想将数据批量加载到 QuestDB 中。顺序不是完全随机的,但存在最多迟到三分钟的偏差,其中有些行迟到了 3 分钟。 有没有一种有效的方法可以像这样进行批量加载并确保数据同时按时间顺序排列?
最有效的方法是分三步走
导入无序数据集,你可以通过curl来完成:
curl -F data=@unordered-data.csv 'http://localhost:9000/imp'
使用导入数据的架构创建 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;
将无序记录插入分区 table 并提供
lag
和batch
尺寸: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 |
lag
在您的情况下可能大约需要 3 分钟,这是记录的预期延迟batch
是一次批处理的记录数