Apache IoTDB 数据导出与导入指南

一、数据导出

IoTDB 提供两种主要导出方式:

1. 命令行工具导出

# 导出整个数据库到CSV
./sbin/start-cli.sh -e "export all /path/to/export"

# 导出特定时间序列
./sbin/start-cli.sh -e "export timeseries root.sg.device.* /path/to/export.csv"

参数说明

  • all:导出所有数据
  • timeseries:指定时间序列路径
  • 支持时间范围过滤:where time > 2023-01-01

2. 编程导出(Java示例)

try (Connection conn = DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/");
     Statement stmt = conn.createStatement()) {
    
    ResultSet rs = stmt.executeQuery("select ** from root.sg.device");
    CsvWriter csv = new CsvWriter("export.csv");
    csv.writeRecords(rs); // 结果集转CSV
}

二、数据导入

1. CSV文件导入

# 基本导入命令
./sbin/start-cli.sh -e "import /path/to/data.csv"

# 带时间戳校准的导入
./sbin/import-csv.sh -f data.csv -aligned -tFormat "yyyy-MM-dd HH:mm:ss"

关键参数

  • -aligned:对齐时间序列
  • -tFormat:指定时间戳格式
  • -sFormat:指定数据类型(自动检测可省略)

2. 批量导入工具

./tools/import-export/import.bat -h 127.0.0.1 -p 6667 -u root -pw root -f data.csv

三、注意事项
  1. 元数据一致性

    • 导入前需确保时间序列已创建
    • 使用 SET STORAGE GROUP 预先创建存储组
  2. 性能优化

    • 单次导入文件建议不超过 1GB
    • 启用批量写入模式:enable_batch_insert=true
  3. 数据完整性校验

    -- 导出后验证数据量
    SELECT count(*) FROM root.sg.device
    

  4. 特殊场景处理

    • 乱序数据:启用 enable_outer_space_compaction=true
    • 时间戳冲突:使用 -skip 跳过或 -overwrite 覆盖

最佳实践:生产环境建议采用 export + scp 进行跨服务器备份,导入时使用 nohup 后台执行:

nohup ./import-csv.sh -f data.csv > import.log 2>&1 &

四、恢复流程示例
graph LR
A[源服务器] -->|export| B[CSV文件]
B -->|scp| C[备份服务器]
C -->|import| D[新IoTDB实例]
D --> E[验证数据一致性]

通过上述方法,可实现 IoTDB 数据的完整备份与恢复,保障时序数据安全性和可迁移性。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐