陷入困境?Taos创建超表带来的错误!

taos创建超表时报错

运行如下命令

let res = await cursor.query("CREATE STABLE meters1 (ts TIMESTAMP, value FLOAT, slot INT,rack INT,nameId VARCHAR(32),adName VARCHAR(32),dbNumber INT,dataType VARCHAR(28), unit VARCHAR(28)) TAGS (location binary(64), groupId int);")

会得到如下的错误信息

{
  _status: 'error',
  _head: undefined,
  _column_meta: undefined,
  _data: undefined,
  _rows: undefined,
  _command: undefined,
  _code: 512,
  _desc: 'invalid SQL: invalid operation: invalid data type'
}

可以看到上面的报错信息得知是类型错误,

解决方法:

方案一:

1.升级taos数据库,可能是版本低导致不支持VARCHAR类型

https://www.mianshigee.com/tutorial/TDengine/55c6c19cfc7a706e.md

在这个连接中可以看到 在TDengine中,普通表的数据模型中可使用10种数据类型,TIMESTAMP,INT,BIGINT ,FLOAT,DOUBLE , BINARY , SMALLINT , TINYINT , BOOL ,NCHAR。具体说明解释可以在这个链接里去看。

方案二:

1.就是不使用VARCHAR,改为BINARY(n)

注意,BINARY(n) 的 n 值必须为 4 的倍数

创建表值得注意的点,不然又出错了

let res = await cursor.query('CREATE TABLE mes1001 USING meters1 TAGS ("California.SanFrancisco", 2);')

往表里插入数据

let res = await cursor.query(`INSERT INTO mes1001 VALUES (${JSON.stringify(currentTime)}, ${d.value}, ${d.slot}, ${d.rack}, '${d.nameId}', '${d.adName}', ${d.dbNumber}, '${d.dataType}',  '${d.unit}')`);

注意 BINARY类型的要加单引号,不然就报错了

其他语句

创建一个库

await cursor.query("CREATE DATABASE chimeng KEEP 365 DAYS 10 BLOCKS 6 UPDATE 1;");

使用这个库

await cursor.query("USE chimeng;");

创建一个超级表

await cursor.query("CREATE STABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);")

创建表

await cursor.query('CREATE TABLE d1001 USING meters TAGS ("California.SanFrancisco", 2);')

插入多条

await cursor.query (`INSERT INTO d1001 VALUES ('2022-07-13 14:06:32.272', 10.2, 219, 0.32) ('2020-07-13 14:06:32.272', 10.2, 219, 0.32) ('2023-03-13 14:06:32.272', 10.2, 219, 0.32)`);

插入一条

await cursor.query(`INSERT INTO d1001 VALUES (${currentTime}, 23, 220, 0.23);`)

查询

let res = await cursor.query('select * from d1001')
res.toString();
console.log(res._data);

杂记

在 Taos 中,可以使用 create stable 命令来创建一个超表。超表是指带有时间戳列的表,用于存储时间序列数据。以下是一个示例超表的创建命令:

create stable db_name.table_name (ts timestamp, col1 int, col2 float) tags(tag1 N, tag2 N) 

在上述命令中,db_name 是数据库的名称,table_name 是超表的名称。通过在命令中指定一个 ts 列,可以将该表设置为超表。在 Taos 中,时间戳列的值必须为 int 类型,表示时间戳的秒数。

示例命令中还指定了一个 col1 列和一个 col2 列,这两列可以用于存储需要存储的数据。另外,该示例命令还指定了 tags,用于定义标签。标签是可以附加到超表中的键值对,可以帮助我们更好的管理和查询超表数据。

在创建超表时,还可以指定一些其他参数,例如分区策略、压缩等级等。例如,以下命令创建了一个名为 my_table 的超表,使用了时间分区策略、FPGA 压缩等级等。
陷入困境?Taos创建超表带来的错误!_第1张图片

你可能感兴趣的:(taos数据库,涛思数据,时序数据库)