本文作者:DurkBlue

tdengine物联网实时数据库的常用命令汇总推荐

DurkBlue 昨天 31
tdengine物联网实时数据库的常用命令汇总摘要:         TDengine是涛思数据开发的一款高性能、分布式的物联网、工业大数据平台,其核心模...

        TDengine是涛思数据开发的一款高性能、分布式的物联网、工业大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。TDengine专为物联网、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本。它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。博主也是第一次开始使用TDengine数据库作为物联网开发的实时数据库,所以仔细汇总了一些tdengine涛思数据客户端命令taos的常用命令汇总

        首先分享tdengine数据库官方开发文档:https://docs.taosdata.com/3.3.2/

        1.修改root账户密码

        tdengine 默认root账户密码taosdata  登录数据库后可以使用以下命令进行修改初始密码:

ALTER USER root pass '你的新密码'    # 你的新密码替换为你设置的新密码

        

        tdengine物联网实时数据库的常用命令汇总  第1张

        2.导出指定数据库tehn的所有表结构,执行以下命令:

taosdump -o ./dump -u root -D tehn -p    #  -o ./dump 参数表示导出的文件在当前执行命令路径的dump目录下

        

    taosdump主要参数含义:

    -o:指定输出文件的路径。文件会自动生成。

    

    -u:用户名。

    

    -p:密码。

    

    -A:指示导出所有数据库的数据。

    

    -D:表示指定数据库。

    

    -i:表示输入目录。

    

    -s:表示导出schema。

    

    -t:指定导入到一个文件的表的个数。该参数可以控制输出文件的大小。

    

    -B:指定一条import语句中包含记录的条数。注意:不要让sql语句超过64k,否则后续导入会出错。该参数为了后续导入时,提高导入速率。

    

    -T: 指定导出数据时,启动的线程数。建议设置成机器上core的2倍。

    

导出结果

    [root@hadoop1 dump]# tree

    .

    ├── dbs.sql    # 这里面包含了tehn数据库的所有表结构

    ├── ok.tables.0.sql

    └── ok.tables.1.sql


特别注意:

若不指定输出路径,则默认导出至当前目录;


若指定了输出目录,则目录需要提前创建好;


导出的文件包括:


一个dbs.sql文件,内容为导出的数据库、超级表创建语句;


若干个XXX_tables.N.sql文件,文件名的规则:XXX是数据库名称,N是数字,从0开始递增,内容为数据表建表语句、插入语句;

tdengine物联网实时数据库的常用命令汇总  第2张


  • 导出指定数据库中指定表的数据,可指定多个表,以空格分隔

./bin/taosdump -o ./dump ok device2 -t 500 -B 100 -T 8

    tdengine物联网实时数据库的常用命令汇总  第3张


    3.既然导出了指定数据库tehn的所有表结构,那么就需要介绍一下怎么导入tehn的所有表结构文件dbs.sql,请执行以下命令:

        1). taos登录tdengine数据库:

        taos -u root -p

        

        2)登录之后选择tehn数据库:

        use tehn

        3)导入tehn的所有表结构:

source /var/log/taos/dbs.sql    # /var/log/taos/dbs.sql表示dbs.sql文件在/var/log/taos目录下,替换成你自己实际上的路径

      4. 数据库操作

#创建库(如果不存在)keep 字段是指文件在表存储的时间,默认是天:

create database if not exists mydb keep 365 days 10 blocks 4;

#使用库:

use mydb;

#删除库:

drop database mydb;

#删除库(如果存在):

drop database if exists mydb;

#显示所有数据库:

show databases;

#修改数据库文件压缩标志位:

alter database mydb comp 2;

#修改数据库副本数:

alter database mydb replica 2;

#修改数据文件保存的天数:

alter database mydb keep 365;

#修改数据写入成功所需要的确认数:

alter database mydb quorum 2;

#修改每个VNODE (TSDB) 中有多少cache大小的内存块:

alter database mydb blocks 100;

 

4.表操作

#创建表,创建表时timestamp 字段必须为第一个字段类型,为主键:

create table if not exists mytable(column_name timestamp, column_name int,……);

#根据超级表创建子表,这样建表之后,子表会复制除去超级表里面的tags字段外的所有字段;

create table table_name using super_table tags (column_value,column_value……);

#删除数据表

drop table if exists mytable;

#显示当前数据库下的所有数据表信息

show tables;

#显示当前数据库下的所有数据表信息

show tables like "%table_name%";

#获取表的结构信息

describe mytable;

#表增加列

alter table mytable add column addfield int;

#表删除列

alter table mytable drop column addfield;

 

5.超级表操作

#创建超级表
#创建STable, 与创建表的SQL语法相似,但需指定TAGS字段的名称和类型。说明:
#1) TAGS 列的数据类型不能是timestamp类型;
#2) TAGS 列名不能与其他列名相同;
#3) TAGS 列名不能为预留关键字;
#4) TAGS 最多允许128个,可以0个,总长度不超过16k个字符

create table if not exists mysupertable (time timestamp, column_name int,……) tags (column_name nchar(50), column_name nchar(100),……);

#删除超级表

drop table if exists super_table ;

#显示当前数据库下的所有超级表信息

show stables like "%super%";

#获取超级表的结构信息

describe super_table ;

#超级表增加列

alter table super_table add column column_name int;

#超级表删除列

alter table super_table drop column column_name;

#添加标签

alter table super_table add tag column nchar(60);

#删除标签

alter table super_table drop tag tag_name;

#修改标签名

alter table super_table change tag old_tag_name  new_tag_name;

#修改子表标签值(TAG)

alter table item_table_name set tag column_key = "value";

 

6. #解释一下(超级表)super_table,(子表)sub_table,(标签)Tag之间的关系

在物联网中,假设我们现在有一个小区的电表设备需要联网。那么电表就会存在张三家的电表,李四家的电表,张三家电表的电流和电压,李四家的电流和电压,以及王五等等家的设备信息。

那么,作为电表这个物联设备,就可以设计成超级表super_table,这样电表就有了张三的电表sub_table1,李四家的电表sub_table2,等等,电流和电压就是超级表中定义表字段属性,而电表所属的业主名称,小区地址可以存放在TAG。

这个场景中,我们就可以下如下创建语句

  首先:创建电表超级表:super_table

create database mydb;use mydb;create table super_dianbiao(ts timestamp,dianya float,dianliu float) tags (yezhu_name nchar(15),xiaoqu_location nchar(50),menpai_num nchar(10));

      其次:创建子表dianbiao……

create table dianbiao1001 using super_dianbiao tags('张三','东城小区','1-1101');create table dianbiao1002 using super_dianbiao tags('李四','东城小区','1-1102');

 最后:往子表中插入数据

insert into dianbiao1001 values(now,1.7,3.2);


此篇文章由DurkBlue发布,转载请注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 昨天
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享