如何将CSV文件中的数据导入TDengine数据库
TDengine CSV数据导入操作教程
前置要求
- 已完成TDengine服务端、客户端安装,服务处于正常运行状态
- 已根据CSV的数据字段结构,提前在TDengine中创建好对应数据库、超级表/普通表,表字段顺序、类型需和CSV数据列完全匹配,避免类型兼容报错
常用导入方案
方案1:taos shell 原生批量导入(适合中小规模数据)
操作步骤最简单,无需额外工具:
- 执行
taos命令登录TDengine客户端 - 切换到目标数据库:
USE 你的数据库名; - 执行导入命令:
INSERT INTO 目标表名 FILE 'CSV文件的绝对路径';
注意事项:CSV文件需要提前删除表头行,数据列顺序需和表字段顺序完全一致;可以提前执行
SET INSERT_BATCH_SIZE = 2000;调整单批次插入行数,优化导入速度
方案2:taosdump工具导入(适合大规模数据)
适合GB级以上的大批量CSV数据导入,性能更好:
- 导入命令示例:
taosdump -i -D 目标数据库名 -t 目标表名 /path/to/your/data.csv - 如果CSV中的时间戳是自定义格式,可追加参数指定格式:
--timestamp-format 'yyyy-MM-dd HH:mm:ss.SSS',参数值替换为你实际使用的时间格式即可
方案3:自定义脚本导入(适合需要数据预处理的场景)
如果导入前需要对CSV数据做清洗、格式转换、空值处理等操作,可通过对应语言的TDengine连接器实现,以Python为例:
- 先安装依赖包:
pip install taos pandas - 参考代码:
import pandas as pd import taos # 建立TDengine连接 conn = taos.connect( host="127.0.0.1", user="root", password="taosdata", database="你的目标数据库名" ) cursor = conn.cursor() # 读取CSV文件,可自行添加预处理逻辑 df = pd.read_csv("你的CSV文件路径") # 示例预处理:将时间列转换为TDengine支持的格式 df['ts'] = pd.to_datetime(df['ts']) # 批量写入数据 batch_size = 1000 for i in range(0, len(df), batch_size): batch = df[i:i+batch_size] values = ",".join([str(tuple(row)) for row in batch.itertuples(index=False)]) cursor.execute(f"INSERT INTO 目标表名 VALUES {values}") cursor.close() conn.close()
常见问题处理
- 时间格式报错:检查CSV内的时间格式是否和导入命令指定的格式匹配,TDengine默认支持Unix时间戳、ISO8601等通用时间格式
- 字段类型不匹配报错:检查CSV内的数值是否超出表字段的存储范围,比如INT类型无法存储超过2^31-1的整数
- 导入速度慢:调大批次插入的行数,导入过程中停止其他写入请求,关闭不必要的日志输出
内容的提问来源于stack exchange,提问作者Jackson
相关产品推荐
相关产品推荐

