前面第四篇已经提取到HTTP数据推送的数据,本篇将把获取的数据写入到TDengine中。
需要MQTT.fx软件和TDengineGUI软件。MQTT.fx负责制造上传数据,TDengineGUI用于展现数据库收到的数据。
先上流图:

由于前面4篇文章已经对相关技术要点进行了讲解,本篇只讲解写入数据库遇到的问题。
问题1:TDengine 写入NCHAR字段时字符串两端必须用单引号,双引号不可以。否者无法写入数据。

var time=msg.payload.time;
var deviceId=msg.payload.deviceId;
var deviceName="'"+msg.payload.deviceName+"'"; // 字符串两端使用单引号引用,详细说明见链接
var Power="'"+msg.payload.Power+"'";//https://www.taosdata.com/docs/cn/v2.0/taos-sql#-4
var Temp=msg.payload.Temp;
const table='armxu_onenet_db.onenet_test'
msg.payload='insert into '+ table+' values ('+time +','+deviceId+','+deviceName+','+Power+','+Temp+');';
return msg;
问题2:TDengine 对 SQL 语句中的英文字符不区分大小写,自动转化为小写执行。
| # | 类型 | Bytes | 说明 |
|---|---|---|---|
| 1 | TIMESTAMP | 8 | 时间戳。缺省精度毫秒,可支持微秒和纳秒。从格林威治时间 1970-01-01 00:00:00.000 (UTC/GMT) 开始,计时不能早于该时间。(从 2.0.18.0 版本开始,已经去除了这一时间范围限制)(从 2.1.5.0 版本开始支持纳秒精度) |
| 2 | INT | 4 | 整型,范围 [-2^31+1, 2^31-1], -2^31 用作 NULL |
| 3 | BIGINT | 8 | 长整型,范围 [-2^63+1, 2^63-1], -2^63 用于 NULL |
| 4 | FLOAT | 4 | 浮点型,有效位数 6-7,范围 [-3.4E38, 3.4E38] |
| 5 | DOUBLE | 8 | 双精度浮点型,有效位数 15-16,范围 [-1.7E308, 1.7E308] |
| 6 | BINARY | 自定义 | 记录单字节字符串,建议只用于处理 ASCII 可见字符,中文等多字节字符需使用 nchar。理论上,最长可以有 16374 字节。binary 仅支持字符串输入,字符串两端需使用单引号引用。使用时须指定大小,如 binary(20) 定义了最长为 20 个单字节字符的字符串,每个字符占 1 byte 的存储空间,总共固定占用 20 bytes 的空间,此时如果用户字符串超出 20 字节将会报错。对于字符串内的单引号,可以用转义字符反斜线加单引号来表示,即 \’。 |
| 7 | SMALLINT | 2 | 短整型, 范围 [-32767, 32767], -32768 用于 NULL |
| 8 | TINYINT | 1 | 单字节整型,范围 [-127, 127], -128 用于 NULL |
| 9 | BOOL | 1 | 布尔型,{true, false} |
| 10 | NCHAR | 自定义 | 记录包含多字节字符在内的字符串,如中文字符。每个 nchar 字符占用 4 bytes 的存储空间。字符串两端使用单引号引用,字符串内的单引号需用转义字符 \’。nchar 使用时须指定字符串大小,类型为 nchar(10) 的列表示此列的字符串最多存储 10 个 nchar 字符,会固定占用 40 bytes 的空间。如果用户字符串长度超出声明长度,将会报错。 |
| 11 | JSON | json数据类型, 只有tag类型可以是json格式 |
数据库常用语句,请根据自己需求更改名称。
create database atestdb;
show databases;
use atestdb;
show tables;
create table t (ts timestamp, counter int);
create table onenet_test (ts timestamp, deviceId int,deviceName NCHAR(20),Power NCHAR(20),Temp FLOAT);
发送数据用 MQTT.fx,下划横线分别代表2个不同的设备
上传数据格式
{
"id": "123",
"version": "1.0",
"params": {
"Power": {
"value": "2435"
},
"temp": {

本文档介绍了如何使用MQTT.fx软件将数据推送到TDengine数据库,并通过TDengineGUI展示数据。主要问题包括:NCHAR字段需用单引号括起,SQL语句不区分大小写。示例代码展示了数据提取、转换和写入的过程,涉及时间戳、字符串和数值类型的处理。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



