1、首先下载服务端,我下载的是:
TDengine-server-2.6.0.30-Linux-x64.tar.gz
下载地址
2、下载过后传到虚拟机。并解压
3、运行文件夹中的 ./install.sh 安装
4、配置 /etc/taos/taos.cfg
firstEp master:6030
fqdn master(这里是hostname)
5、taos 即可进入控制台访问
6、卸载命令:rmtaos
添加依赖:
<dependency>
<groupId>com.taosdata.jdbcgroupId>
<artifactId>taos-jdbcdriverartifactId>
<version>2.0.36version>
dependency>
连接测试:
import com.taosdata.jdbc.TSDBDriver;
import java.sql.*;
import java.util.Properties;
/**
* @ClassName: ConnectTest
* @Author: liumenghao
* @Description:
* @Date: 2022/11/17 11:04
*/
public class ConnectTest {
public static void main(String[] args) throws Exception{
Class.forName("com.taosdata.jdbc.TSDBDriver");
String jdbcUrl = "jdbc:TAOS://master:6030?user=root&password=taosdata";
Properties connProps = new Properties();
connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
connProps.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
Connection conn = DriverManager.getConnection(jdbcUrl, connProps);
System.out.println("Connected");
Statement stmt = conn.createStatement();
// create database
stmt.executeUpdate("create database if not exists db");
// use database,通过use指明数据库,后面查表的时候就不用再带上 数据库.表
stmt.executeUpdate("use db");
// create table
stmt.executeUpdate("create table if not exists tb (ts timestamp, temperature int, humidity float)");
insert(stmt);
select(stmt);
conn.close();
}
// 插入数据
public static void insert(Statement stmt) throws Exception {
// insert data
int affectedRows = stmt.executeUpdate("insert into tb values(now, 23, 10.3) (now + 1s, 20, 9.3)");
System.out.println("insert " + affectedRows + " rows.");
}
// 查询数据
public static void select(Statement stmt) throws Exception {
// query data
ResultSet resultSet = stmt.executeQuery("select * from tb");
Timestamp ts = null;
int temperature = 0;
float humidity = 0;
while(resultSet.next()){
// 根据columnIndex获取,从1开始
ts = resultSet.getTimestamp(1);
temperature = resultSet.getInt(2);
// 根据属性名获取
humidity = resultSet.getFloat("humidity");
System.out.printf("%s, %d, %s\n", ts, temperature, humidity);
}
}
}
(1)创建库
CREATE DATABASE db KEEP 365 DURATION 10
创建数据库db,保留365天,每10天产生一个数据文件
(2)切换库
use db
(3)创建超级表
使用 TDengine, 需要对每个类型的数据采集点都创建一个超级表。
CREATE STABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);
表名:meters
表结构:第一列必须为时间戳(timestamp类型)其他列为自己所定。除此之外,还需要提供标签的schema(示例中为 location,groupId)
(4)创建表
TDengine 对每个数据采集点需要独立建表。与标准的关系型数据库一样,一张表有表名,Schema,除此之外,还可以带有一到多个标签。创建时,需要使用超级表做模板,同时指定标签的具体值。
CREATE TABLE d1001 USING meters TAGS ("California.SanFrancisco", 2);
(5)自助建表
在某些特殊场景中,用户在写数据时并不确定某个数据采集点的表是否存在,此时可在写入数据时使用自动建表语法来创建不存在的表,若该表已存在则不会建立新表且后面的 USING 语句被忽略。
INSERT INTO d1001 USING meters TAGS ("California.SanFrancisco", 2) VALUES (NOW, 10.2, 219, 0.32);
(6)写入数据
一次写入一条:
INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31);
一次写入多条:
INSERT INTO d1001 VALUES (1538548684000, 10.2, 220, 0.23) (1538548696650, 10.3, 218, 0.25);
一次写入多表:
INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31) (1538548695000, 12.6, 218, 0.33) d1002 VALUES (1538548696800, 12.3, 221, 0.31);
在时序数据的处理中,经常要对原始数据进行清洗、预处理,再使用时序数据库进行长久的储存。在传统的时序数据解决方案中,常常需要部署 Kafka、Flink 等流处理系统。而流处理系统的复杂性,带来了高昂的开发与运维成本。
TDengine 3.0 的流式计算引擎提供了实时处理写入的数据流的能力,使用 SQL 定义实时流变换,当数据被写入流的源表后,数据会被以定义的方式自动处理,并根据定义的触发模式向目的表推送结果。它提供了替代复杂流处理系统的轻量级解决方案,并能够在高吞吐的数据写入的情况下,提供毫秒级的计算结果延迟。
(1)创建流
create stream current_stream into current_stream_output_stb as select _wstart as start, _wend as wend, max(current) as max_current from meters where voltage <= 220 interval (5s);
报错了,不知为何。