国产IOTDB(1.3.2):第4集 常用语句

概要

        本文主要是提炼出本人经常用到的或者说是比较常用的语句,希望对大家有所帮助,同时欢迎大家一起交流,后面的文章,因为我这项目是java启动的,后续会演示用java怎么链接IOTDB和配置一些参数,比如前面文章里面说到的一些单独的超时设定。下面放上前面的链接🔗。

国产IOTDB(1.3.2):第0集 本地Docker搭建展示和建议-CSDN博客

国产IOTDB(1.3.2):第1集 本地Docker部署之1-CSDN博客

国产IOTDB(1.3.2):第2集 本地Docker部署之2-CSDN博客

国产IOTDB(1.3.2):第3集 参数建议和优化-CSDN博客

正文开始:

  1、DATABASE 数据库        

       查看目前数据库中的Database。因为iotdb默认都是用root开始的,所以不要自己在各种分支路径上再定义root了,不然就是自己给自己找事情不是。

 show DATABASES;

我这里的__system应该是系统默认的数据库。下面的cs和ln是我后期创建的,这里我为啥没有先写创建database,是因为iotdb会把第二层,也就是root.后面的主动认为是database。大家在后面可以直接创建对应的序列/TIMESERIES,就可以了,不用主动创建。(注:如果涉及到文件分区等或者别的后期敏感的操作,这里还是建议主动创建Database。下面是实例)

CREATE DATABASE root.ln

此外,Database层应该就是组织结构的顶级了,比如说总公司,总长,集团……懂得自然懂。

2、TIMESERIES 时间序列

         由于数据库特性,并不需要一层层创建对应的组织结构,可以直接创建序列,自动就有对应的结构了,所以就推荐大家现在纸上,或者其它软件商设计好整体的结构,尽量,尽量,尽量避免后期的改动。

2.1创建普通序列

CREATE TIMESERIES root.store1.s01.wt01.temperature WITH datatype=FLOAT,ENCODING=RLE;

再执行 

show databases

可以看到对应的Database层store1已经有了。

2.2创建对齐的时间序列(本人更推荐这种)

CREATE ALIGNED TIMESERIES root.al_store.s02.GPS(latitude FLOAT encoding=PLAIN compressor=SNAPPY, longitude FLOAT encoding=PLAIN compressor=SNAPPY);

可以执行show devices;查看设备的一些属性内容。

此处root.al_store.s02.GPS对应的IsAligned显示未true表示这个设备下面的时间序列按照时间对齐。上面我说为啥我更推荐这种是因为,我这里需要采集的单个设备中,采集的设备信息都是同一时间采上来的,时间刻度相同,这样所有的采集点都可以使用同一个时间,就跟图表中多个Y轴数据使用同一个X轴的时间数据。下面用一张官方的图(S1,S2,S3都是采集点或者说是timeseries,都是来源于一个设备,左面是非对齐状态,右面是设备对齐状态。其中t代表时间)

2.3查看时间序列内容

show timeseries root.al_store.s02.GPS.*;

show timeseries root.**;

2.4删除序列

delete timeseries root.al_store.s02.GPS.latitude;

上面创建了两个序列删除一个指定的序列后:

批量删除设备下的所有序列:(谨慎使用)

delete timeseries root.al_store.s02.GPS.*;

3、查看子路径

        注意这里说的是子路径。下面的语句大家可以先思考下应该是啥样的结果。

show child paths root.*;

下面是执行结果:

不知道是不是和大多数人想的一样。路径明明是root.*。也就是两级目录(root.**才是所有级别)所以上面我才说注意这里查询的是子路径,就是当前路径下面的子路径,根据上面路径,也就是说子路径都是三个的。

        此外,这个对于一些业务场景,结合查看Datebase,是很容易整理或者说同步iotdb的信息的(* ̄︶ ̄)。

4、查看设备 devices

         所谓设备(路径信息的末数第二层),可以对应到所要采集的设备信息上,但是建议取名的时候按照你的业务规则来,尽量一眼能看出来。

show devices;

show devices with database;

查询设备并连带着数据库信息,虽然可以从数据库路径上看出来,但是犹豫查询非常快,就不建议在某些场景下通过java来截取了。

查看特定数据库下面的设备

show devices root.ln.**;

5、写入数据

这里我主要就是复制sql了,因为我这主要是用java取数和展示,并不主要是负责采集。等到后面的文章里面再给大家演示怎么通过java往里面写入数据(因为我这有数据同步的一个业务需要。)

写入单列数据

insert into root.ln.wf02.wt02(timestamp,status) values(1,true);

insert into root.ln.wf02.wt02(timestamp,hardware) values(1, 'v1'),(2, 'v1');

写入多列数据

insert into root.ln.wf02.wt02(timestamp, status, hardware) values (2, false, 'v2');

insert into root.ln.wf02.wt02(timestamp, status, hardware) VALUES (3, false, 'v3'),(4, true, 'v4');

使用服务器时间戳写入数据

insert into root.ln.wf02.wt02(status, hardware) values (false, 'v2');

:当不主动写入timestamp的时候,再插入数据时,就会采用服务器的当前时间去插入数据,此时一定要注意服务器的时间是否正确✅

写入对齐时间序列数据

 create aligned timeseries root.sg1.d1(s1 INT32, s2 DOUBLE);

 insert into root.sg1.d1(timestamp, s1, s2) aligned values(1, 1, 1);

 insert into root.sg1.d1(timestamp, s1, s2) aligned values(2, 2, 2), (3, 3, 3);

结尾:

        上面的sql语句,主要是我日常用的比较多的,然后摘取出来,尽量让需要的人少走弯路的,希望对各位看官有所帮助。做牛马的日子里面,大家一起努力!!!

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值