IoTDB 数据导入全攻略:工具、自动加载与 Load SQL 详解

IoTDB 数据导入全攻略:工具、自动加载与 Load SQL 详解
在这里插入图片描述

IoTDB 数据导入全攻略:工具、自动加载与 Load SQL 详解

本文详细介绍了 IoTDB 支持的数据导入工具、TsFile 自动加载和Load SQL 导入三种数据导入方式,分别阐述了数据导入工具针对 CSV、SQL、TsFile 三种格式文件的参数配置、运行命令及异常处理方案,TsFile 自动加载功能的配置参数与注意事项,以及 Load SQL 导入 TsFile 的语法规则与属性参数设置,并结合具体示例说明不同导入方式的实操流程,旨在帮助使用者根据实际业务场景选择合适的导入方案,提升 IoTDB 时序数据导入的效率与稳定性。
在这里插入图片描述

1. 功能概述

IoTDB 支持三种方式进行数据导入:

  • 数据导入工具 :import-data.sh/bat 位于 tools 目录下,可以将 CSVSQL、及TsFile(开源时序文件格式)的数据导入 IoTDB
  • TsFile 自动加载功能。
  • Load SQL 导入 TsFile
文件格式IoTDB工具具体介绍
CSVimport-data.sh/bat可用于单个或一个目录的 CSV 文件批量导入 IoTDB
SQLimport-data.sh/bat可用于单个或一个目录的 SQL 文件批量导入 IoTDB
TsFileimport-data.sh/bat可用于单个或一个目录的 TsFile 文件批量导入 IoTDB
TsFileTsFile 自动加载可以监听指定路径下新产生的 TsFile 文件,并将其加载进 IoTDB
TsFileLoad SQL可用于单个或一个目录的 TsFile 文件批量导入 IoTDB

2. 数据导入工具

2.1 公共参数

参数缩写参数全称参数含义是否为必填项默认值
-ft–file_type导入文件的类型,可以选择:csv、sql、tsfile
-h– host主机名127.0.0.1
-p–port端口号6667
-u–username用户名root
-pw–password密码root
-s–source待加载的脚本文件(夹)的本地目录路径 如果为csv sql tsfile这三个支持的格式,直接导入 不支持的格式,报错提示The file name must end with "csv" or "sql"or "tsfile"!
-tn–thread_num最大并行线程数8 范围:0~Integer.Max=2147483647
-tz–timezone时区设置,例如+08:00
-01:00
本机系统时间
-help–help显示帮助信息,支持分开展示和全部展示-help
-help csv

2.2 CSV 格式

2.2.1 运行命令
# Unix/OS X> tools/import-data.sh -ft<format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s <source>[-fd <fail_dir>][-lpf <lines_per_failed_file>][-aligned <use the aligned interface>][-ti <type_infer>][-tp <timestamp precision (ms/us/ns)>][-tz <timezone>][-batch <batch_size>][-tn <thread_num>]# Windows# V2.0.4.x 版本之前> tools\import-data.bat -ft<format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s <source>[-fd <fail_dir>][-lpf <lines_per_failed_file>][-aligned <use the aligned interface>][-ti <type_infer>][-tp <timestamp precision (ms/us/ns)>][-tz <timezone>][-batch <batch_size>][-tn <thread_num>]# V2.0.4.x 版本及之后 > tools\windows\import-data.bat -ft<format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s <source>[-fd <fail_dir>][-lpf <lines_per_failed_file>][-aligned <use the aligned interface>][-ti <type_infer>][-tp <timestamp precision (ms/us/ns)>][-tz <timezone>][-batch <batch_size>][-tn <thread_num>]
2.2.2 私有参数
参数缩写参数全称参数含义是否为必填项默认值
-fd–fail_dir指定保存失败文件的目录YOUR_CSV_FILE_PATH
-lpf–lines_per_failed_file指定失败文件最大写入数据的行数100000 范围:0~Integer.Max=2147483647
-aligned–use_aligned是否导入为对齐序列false
-batch–batch_size指定每调用一次接口处理的数据行数(最小值为1,最大值为Integer.MAX_VALUE100000 范围:0~Integer.Max=2147483647
-ti–type_infer通过选项定义类型信息,例如"boolean=text,int=long, ..."
-tp–timestamp_precision时间戳精度否: 1. ms(毫秒) 2. us(微秒) 3. ns(纳秒)ms
2.2.3 运行示例
# 正确示例> tools/import-data.sh -ft csv -h 127.0.0.1 -p 6667 -u root -pw root -s /path/sql -fd /path/failure/dir -lpf 100 -aligned true -ti "BOOLEAN=text,INT=long,FLOAT=double" -tp ms -tz +08:00 -batch 5000 -tn 4# 异常示例> tools/import-data.sh -ft csv -s /non_path error: Source file or directory /non_path does not exist > tools/import-data.sh -ft csv -s /path/sql -tn 0 error: Invalid thread number '0'. Please set a positive integer. 
2.3.4 导入说明
  1. CSV 导入规范
  • 特殊字符转义规则:若Text类型的字段中包含特殊字符(例如逗号,),需使用反斜杠(\)进行转义处理。
  • 支持的时间格式:yyyy-MM-dd’T’HH:mm:ss, yyy-MM-dd HH:mm:ss, 或者 yyyy-MM-dd’T’HH:mm:ss.SSSZ。
  • 时间戳列必须作为数据文件的首列存在。
  1. CSV 文件示例
  • 时间对齐
-- header 中不包含数据类型Time,root.test.t1.str,root.test.t2.str,root.test.t2.var 1970-01-01T08:00:00.001+08:00,"123hello world","123\,abc",1001970-01-01T08:00:00.002+08:00,"123",,-- header 中包含数据类型(Text 类型数据支持加双引号和不加双引号)Time,root.test.t1.str(TEXT),root.test.t2.str(TEXT),root.test.t2.var(INT32)1970-01-01T08:00:00.001+08:00,"123hello world","123\,abc",1001970-01-01T08:00:00.002+08:00,123,hello world,1231970-01-01T08:00:00.003+08:00,"123",,1970-01-01T08:00:00.004+08:00,123,,12
  • 设备对齐
-- header 中不包含数据类型Time,Device,str,var 1970-01-01T08:00:00.001+08:00,root.test.t1,"123hello world",1970-01-01T08:00:00.002+08:00,root.test.t1,"123",1970-01-01T08:00:00.001+08:00,root.test.t2,"123\,abc",100-- header 中包含数据类型(Text 类型数据支持加双引号和不加双引号)Time,Device,str(TEXT),var(INT32)1970-01-01T08:00:00.001+08:00,root.test.t1,"123hello world",1970-01-01T08:00:00.002+08:00,root.test.t1,"123",1970-01-01T08:00:00.001+08:00,root.test.t2,"123\,abc",1001970-01-01T08:00:00.002+08:00,root.test.t1,hello world,123

2.3 SQL 格式

2.2.1 运行命令
# Unix/OS X> tools/import-data.sh -ft<format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s<source>[-fd <fail_dir>][-lpf <lines_per_failed_file>][-tz <timezone>][-batch <batch_size>][-tn <thread_num>]# Windows# V2.0.4.x 版本之前> tools\import-data.bat -ft<format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s<source>[-fd <fail_dir>][-lpf <lines_per_failed_file>][-tz <timezone>][-batch <batch_size>][-tn <thread_num>]# V2.0.4.x 版本及之后 > tools\import-data.bat -ft<format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s<source>[-fd <fail_dir>][-lpf <lines_per_failed_file>][-tz <timezone>][-batch <batch_size>][-tn <thread_num>]
2.2.2 私有参数
参数缩写参数全称参数含义是否为必填项默认值
-fd–fail_dir指定保存失败文件的目录YOUR_CSV_FILE_PATH
-lpf–lines_per_failed_file指定失败文件最大写入数据的行数100000 范围:0~Integer.Max=2147483647
-batch–batch_size指定每调用一次接口处理的数据行数(最小值为1,最大值为Integer.MAX_VALUE100000 范围:0~Integer.Max=2147483647
2.2.3 运行示例
# 正确示例> tools/import-data.sh -ft sql -h 127.0.0.1 -p 6667 -u root -pw root -s /path/sql -fd /path/failure/dir -lpf 500 -tz +08:00 -batch 100000 -tn 4# 异常示例> tools/import-data.sh -ft sql -s /path/sql -fd /non_path error: Source file or directory /path/sql does not exist > tools/import-data.sh -ft sql -s /path/sql -tn 0 error: Invalid thread number '0'. Please set a positive integer. 

2.4 TsFile 格式

2.4.1 运行命令
# Unix/OS X> tools/import-data.sh -ft <format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s <source> -os <on_success>[-sd <success_dir>] -of <on_fail>[-fd <fail_dir>][-tn <thread_num>][-tz <timezone>][-tp <timestamp precision (ms/us/ns)>]# Windows# V2.0.4.x 版本之前> tools\import-data.bat -ft <format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s <source> -os <on_success>[-sd <success_dir>] -of <on_fail>[-fd <fail_dir>][-tn <thread_num>][-tz <timezone>][-tp <timestamp precision (ms/us/ns)>]# V2.0.4.x 版本及之后 > tools\windows\import-data.bat -ft <format>[-h <host>][-p <port>][-u <username>][-pw <password>] -s <source> -os <on_success>[-sd <success_dir>] -of <on_fail>[-fd <fail_dir>][-tn <thread_num>][-tz <timezone>][-tp <timestamp precision (ms/us/ns)>]
2.4.2 私有参数
参数缩写参数全称参数含义是否为必填项默认值
-os–on_succcess1. none:不删除 2. mv:移动成功的文件到目标文件夹 3. cp:硬连接(拷贝)成功的文件到目标文件夹 4. delete:删除
-sd–success_dir--on_succcess
为mv或cp时,mv或cp的目标文件夹。文件的文件名变为文件夹打平后拼接原有文件名
--on_succcess
为mv或cp时需要填写
${EXEC_DIR}/success
-of–on_fail1. none:跳过 2. mv:移动失败的文件到目标文件夹 3. cp:硬连接(拷贝)失败的文件到目标文件夹 4. delete:删除
-fd–fail_dir--on_fail
指定为mv或cp时,mv或cp的目标文件夹。文件的文件名变为文件夹打平后拼接原有文件名
--on_fail
指定为mv或cp时需要填写
${EXEC_DIR}/fail
-tp–timestamp_precision时间戳精度 tsfile非远程导入:-tp 指定tsfile文件的时间精度 手动校验和服务器的时间戳是否一致 不一致返回报错信息 远程导入:-tp 指定tsfile文件的时间精度 pipe自动校验时间戳精度是否一致 不一致返回pipe报错信息否: 1. ms(毫秒) 2. us(微秒) 3. ns(纳秒)ms
2.4.3 运行示例
# 正确示例> tools/import-data.sh -ft tsfile -h 127.0.0.1 -p 6667 -u root -pw root -s /path/sql -os mv -of cp -sd /path/success/dir -fd /path/failure/dir -tn 8 -tz +08:00 -tp ms # 异常示例> tools/import-data.sh -ft tsfile -s /path/sql -os mv -of cp -fd /path/failure/dir -tn 8 error: Missing option --success_dir (or -sd) when --on_success is 'mv' or 'cp'> tools/import-data.sh -ft tsfile -s /path/sql -os mv -of cp -sd /path/success/dir -fd /path/failure/dir -tn 0 error: Invalid thread number '0'. Please set a positive integer. 

3. TsFile 自动加载功能

本功能允许 IoTDB 主动监听指定目录下的新增 TsFile,并将 TsFile 自动加载至 IoTDB 中。通过此功能,IoTDB 能自动检测并加载 TsFile,无需手动执行任何额外的加载操作。

3.1 配置参数

可通过从配置文件模版 iotdb-system.properties.template 中找到下列参数,添加到 IoTDB 配置文件 iotdb-system.properties 中开启 TsFile 自动加载功能。完整配置如下:

配置参数参数说明value 取值范围是否必填默认值加载方式
load_active_listening_enable是否开启 DataNode 主动监听并且加载 tsfile 的功能(默认开启)。Boolean: true,false选填true热加载
load_active_listening_dirs需要监听的目录(自动包括目录中的子目录),如有多个使用 “,“ 隔开默认的目录为 ext/load/pending
(支持热装载)
String: 一个或多个文件目录选填ext/load/pending热加载
load_active_listening_fail_dir执行加载 tsfile 文件失败后将文件转存的目录,只能配置一个String: 一个文件目录选填ext/load/failed热加载
load_active_listening_max_thread_num同时执行加载 tsfile 任务的最大线程数,参数被注释掉时的默值为 max(1, CPU 核心数 / 2),当用户设置的值不在这个区间[1, CPU核心数 /2]内时,会设置为默认值 (1, CPU 核心数 / 2)Long: [1, Long.MAX_VALUE]选填max(1, CPU 核心数 / 2)重启后生效
load_active_listening_check_interval_seconds主动监听轮询间隔,单位秒。主动监听 tsfile 的功能是通过轮询检查文件夹实现的。该配置指定了两次检查 load_active_listening_dirs
的时间间隔,每次检查完成 load_active_listening_check_interval_seconds
秒后,会执行下一次检查。当用户设置的轮询间隔小于 1 时,会被设置为默认值 5 秒
Long: [1, Long.MAX_VALUE]选填5重启后生效

3.2 注意事项

  1. 如果待加载的文件中,存在 mods 文件,应优先将 mods 文件移动到监听目录下面,然后再移动 tsfile 文件,且 mods 文件应和对应的 tsfile 文件处于同一目录。防止加载到 tsfile 文件时,加载不到对应的 mods 文件
  2. 禁止设置 Pipe 的 receiver 目录、存放数据的 data 目录等作为监听目录
  3. 禁止 load_active_listening_fail_dirload_active_listening_dirs 存在相同的目录,或者互相嵌套
  4. 保证 load_active_listening_dirs 目录有足够的权限,在加载成功之后,文件将会被删除,如果没有删除权限,则会重复加载

4. Load SQL

IoTDB 支持通过 CLI 执行 SQL 直接将存有时间序列的一个或多个 TsFile 文件导入到另外一个正在运行的 IoTDB 实例中。

4.1 运行命令

load'<path/dir>'with('attribute-key1'='attribute-value1','attribute-key2'='attribute-value2',)
  • <path/dir> :文件本身,或是包含若干文件的文件夹路径
  • <attributes>:可选参数,具体如下表所示
KeyKey 描述Value 类型Value 取值范围Value 是否必填Value 默认值
database-level当 tsfile 对应的 database 不存在时,可以通过 database-level
参数的值来制定 database 的级别,默认为iotdb-common.properties
中设置的级别。 例如当设置 level 参数为 1 时表明此 tsfile 中所有时间序列中层级为1的前缀路径是 database。
Integer[1: Integer.MAX_VALUE]1
on-success表示对于成功载入的 tsfile 的处置方式:默认为delete
,即tsfile 成功加载后将被删除;none
表明 tsfile 成功加载之后依然被保留在源文件夹,
Stringdelete / nonedelete
model指定写入的 tsfile 是表模型还是树模型Stringtree / table-sql_dialect
一致
database-name仅限表模型有效: 文件导入的目标 database,不存在时会自动创建,database-name
中不允许包括"root.
"前缀,如果包含,将会报错。
String-null
convert-on-type-mismatch加载 tsfile 时,如果数据类型不一致,是否进行转换Booleantrue / falsetrue
verify加载 tsfile 前是否校验 schemaBooleantrue / falsetrue
tablet-conversion-threshold转换为 tablet 形式的 tsfile 大小阈值,针对小文件 tsfile 加载,采用将其转换为 tablet 形式进行写入:默认值为 -1,即任意大小 tsfile 都不进行转换Integer[-1,0 :
Integer.MAX_VALUE]
-1
async是否开启异步加载 tsfile,将文件移到 active load 目录下面,所有的 tsfile 都 load 到database-name
下.
Booleantrue / falsefalse

4.2 运行示例

-- 准备待导入环境 IoTDB>showdatabases+-------------+-----------------------+---------------------+-------------------+---------------------+|Database|SchemaReplicationFactor|DataReplicationFactor|TimePartitionOrigin|TimePartitionInterval|+-------------+-----------------------+---------------------+-------------------+---------------------+|root.__system|1|1|0|604800000|+-------------+-----------------------+---------------------+-------------------+---------------------+-- 通过load sql 导入 tsfile IoTDB>load'/home/dump1.tsfile'with('on-success'='none') Msg: The statement is executed successfully.-- 验证数据导入成功 IoTDB>select*from root.testdb.**+-----------------------------+------------------------------------+---------------------------------+-------------------------------+|Time|root.testdb.device.model.temperature|root.testdb.device.model.humidity|root.testdb.device.model.status|+-----------------------------+------------------------------------+---------------------------------+-------------------------------+|2025-04-17T10:35:47.218+08:00|22.3|19.4|true|+-----------------------------+------------------------------------+---------------------------------+-------------------------------+

5.总结

本文详细介绍了 IoTDB 三种核心数据导入方式的使用方法、参数配置及注意事项,分别为数据导入工具导入TsFile 自动加载Load SQL 导入,可满足不同场景下的时序数据导入需求。

  1. 数据导入工具
    该工具支持 CSV、SQL、TsFile 三种格式文件的批量导入,通过 import-data.sh/bat 脚本执行操作。使用时需配置文件类型、数据源路径等必填参数,同时可根据需求调整线程数、批次大小、时区等可选参数。不同格式文件有专属私有参数,比如 TsFile 格式需指定成功与失败文件的处理策略,CSV 格式可设置类型推断和时间戳精度。操作时需注意路径有效性、线程数取值范围等问题,避免出现导入异常。
  2. TsFile 自动加载
    该功能通过配置 iotdb-system.properties 文件开启,IoTDB 会主动监听指定目录下新增的 TsFile 文件并自动加载。配置过程中需合理设置监听目录、失败文件目录、最大线程数等参数,同时要遵循 mods 文件与 TsFile 文件同目录、禁止监听敏感目录等规则,以此保证自动加载功能稳定运行。
  3. Load SQL 导入
    该方式适用于通过 CLI 直接导入 TsFile 文件,使用 load 语句并搭配灵活的属性参数,比如指定数据库级别、成功后文件处置方式、数据模型类型等。此方法无需依赖外部脚本,可直接在 IoTDB 客户端执行,适合少量 TsFile 文件的快速导入场景。

综上,批量导入多格式文件时优先选择数据导入工具,需要持续自动导入 TsFile 时推荐自动加载功能,而简单的 TsFile 导入需求可直接使用Load SQL,根据实际场景选择合适的导入方式,能够有效提升 IoTDB 数据导入的效率与稳定性。

🌐 附:IoTDB的各大版本

📄 Apache IoTDB 是一款工业物联网时序数据库管理系统,采用端边云协同的轻量化架构,支持一体化的物联网时序数据收集、存储、管理与分析 ,具有多协议兼容、超高压缩比、高通量读写、工业级稳定、极简运维等特点。

版本IoTDB 二进制包IoTDB 源代码发布说明
2.0.5- All-in-one
- AINode
- SHA512
- ASC
- 源代码
- SHA512
- ASC
release notes
1.3.5- All-in-one
- AINode
- SHA512
- ASC
- 源代码
- SHA512
- ASC
release notes
0.13.4- All-in-one
- Grafana 连接器
- Grafana 插件
- SHA512
- ASC
- 源代码
- SHA512
- ASC
release notes

✨ 目前最新版本为2.0.6,去获取:https://archive.apache.org/dist/iotdb/

联系博主

    xcLeigh 博主,全栈领域优质创作者,博客专家,目前,活跃在ZEEKLOG、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于ZEEKLOG平台,作者:xcLeigh所有权归作者所有)https://xcleigh.blog.ZEEKLOG.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

Read more

【人工智能】多目标融合算法(一):样本Loss加权(Sample Loss Reweight)

【人工智能】多目标融合算法(一):样本Loss加权(Sample Loss Reweight)

目录 一、引言 二、样本Loss提权 2.1 技术原理 2.2 技术优缺点 2.3 代码实例 三、总结 一、引言 在朴素的深度学习ctr预估模型中(如DNN),通常以一个行为为预估目标,比如通过ctr预估点击率。但实际推荐系统业务场景中,更多是多种目标融合的结果,比如视频推荐,会存在视频点击率、视频完整播放率、视频播放时长等多个目标,而多种目标如何更好的融合,在工业界与学术界均有较多内容产出,由于该环节对实际业务影响最为直接,特开此专栏对推荐系统深度学习多目标问题进行讲述。 今天重点介绍“样本Loss提权”,该方法通过训练时Loss乘以样本权重实现对其它目标的加权,方法最为简单。 二、样本Loss提权 2.1 技术原理 所有目标使用一个模型,在标注正样本时,考虑多个目标。例如对于点击和播放,在标注正样本时,给予不同的权重,使它们综合体现在模型目标中。如下表,以视频业务为例,

By Ne0inhk
Spring AI Agent 模式:为什么你的AI Agent总是忘事

Spring AI Agent 模式:为什么你的AI Agent总是忘事

研究表明,大语言模型存在一个被称为"Lost in the Middle"的问题——当上下文变长时,模型对中间位置的信息注意力会显著下降。开头和结尾的内容记得清清楚楚,中间的任务就容易被"遗忘"。当你的Agent需要同时处理文件编辑、测试执行、文档更新等多个步骤时,某些重要步骤就可能悄无声息地消失了。 你有没有遇到过这种情况:让AI Agent执行一个复杂的多步骤任务,结果它做到一半就悄悄跳过了某个关键步骤?比如你让它修改代码、运行测试、更新文档,最后发现测试根本没跑。 这不是个例。 研究表明,大语言模型存在一个被称为"Lost in the Middle"的问题——当上下文变长时,模型对中间位置的信息注意力会显著下降。 开头和结尾的内容记得清清楚楚,中间的任务就容易被"遗忘"。当你的Agent需要同时处理文件编辑、测试执行、文档更新等多个步骤时,某些重要步骤就可能悄无声息地消失了。 有没有什么好办法?

By Ne0inhk
告别“选择困难症”:我是如何用 AI Ping 实现大模型自由,还能省下 50% 成本的?

告别“选择困难症”:我是如何用 AI Ping 实现大模型自由,还能省下 50% 成本的?

告别“选择困难症”:我是如何用 AI Ping 实现大模型自由,还能省下 50% 成本的? * 写在最前面 * 场景一:从“写脚本卡壳”到“批量生成” * 场景二:开发路上的“万能插头” * 使用感受 * 一点小建议与期待 * 写在最后 🌈你好呀!我是 是Yu欸🚀 感谢你的陪伴与支持~ 欢迎添加文末好友🌌 在所有感兴趣的领域扩展知识,不定期掉落福利资讯(*^▽^*) 写在最前面 版权声明:本文为原创,遵循 CC 4.0 BY-SA 协议。转载请注明出处。 在这个大模型“百花齐放”甚至“百模大战”的时代,作为一名既要写代码开发,又要频繁输出技术内容(写博文、做视频)的开发者,我每天最大的烦恼就是: “今天这个任务,

By Ne0inhk

ESP32 小智 AI 机器人入门教程从原理到实现(自己云端部署)

此博客为一篇针对初学者的详细教程,涵盖小智 AI 机器人的原理、硬件准备、软件环境搭建、代码实现、云端部署以及优化扩展。文章结合了现有的网络资源,取长补短,确保内容易于理解和操作。 简介: 本教程将指导初学者使用 ESP32 微控制器开发一个简单的语音对话机器人“小智”。我们将介绍所需的基础原理、硬件准备、软件环境搭建,以及如何编写代码实现语音唤醒和与云端大模型的对接。通过本教程,即使没有深厚的 AI 或嵌入式经验,也可以一步步制作出一个能听懂唤醒词并与人对话的简易 AI 机器人。本教程提供详细的操作步骤、代码示例和图示,帮助您轻松上手。 1. 基础原理 ESP32 架构及其在 AI 领域的应用: ESP32 是一款集成 Wi-Fi 和蓝牙的双核微控制器,具有较高的主频和丰富的外设接口,适合物联网和嵌入式 AI 应用。特别是新版的 ESP32-S3 芯片,不仅运行频率高达 240MHz,还内置了向量加速指令(

By Ne0inhk