TDengine Pom
TDengine Pom
pom xml
D:\noteMe\md\时序数据库
https://blog.csdn.net/taos_data/article/details/106851359
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<version>1.0.3</version>
</dependency>
TDengine虽未提供Spark调用的DataSource,但TDengine本身也支持JDBC,因此,这里使用spark-jdbc来读取TDengine,最新版本可以到官网下载,我这里用的是如下版本:
由于TDengine是使用C语言开发的,使用taos-jdbcdriver驱动包时需要依赖系统对应的本地函数库。
- libtaos.so在Linux系统中成功安装TDengine后,依赖的本地函数库libtaos.so文件会被自动拷贝至/usr/lib/libtaos.so,该目录包含在Linux自动扫描路径上,无需单独指定。
2.taos.dll在windows系统中安装完客户端之后,驱动包依赖的taos.dll文件会自动拷贝到系统默认搜索路径C:/Windows/System32下,同样无需要单独指定。
第一次使用时,为了保证机器上有libtaos.so或taos.dll,需要在本地安装TDengine客户端(客户端请至TDengine官网下载)
————————————————
val jdbccdf = spark
.read
.format("jdbc")
.option("url", "jdbc:TAOS://192.168.1.151:6030/log")
.option("driver", "com.taosdata.jdbc.TSDBDriver")
.option("dbtable", "log")
.option("user", "root")
.option("password", "taosdata")
.option("fetchsize", "1000")
.load()
因为在读TDengine的时候,第一个字段ts会被转换为decimal,但是存储时直接存decimal tdengine是不认的,所以需要将ts进行类型转换
jdbccdf.select(($"ts" / 1000000).cast(TimestampType).as("ts"), $"level", $"content", $"ipaddr")
.write.format("jdbc")
.option("url", "jdbc:TAOS://192.168.1.151:6030/test?charset=UTF-8&locale=en_US.UTF-8")
.option("driver", "com.taosdata.jdbc.TSDBDriver")
.option("dbtable", "log2")
.option("user", "root")
.option("password", "taosdata")
.mode(SaveMode.Append)
.save()
- Spark yarn模式运行TDengine
上面的测试都是基于maser为local测试的,如果以yarn模式运行,则在每个节点上都安装TDengine客户端是不现实的,查看taos-jdbcdriver的代码,发现,driver会执行System.load(“taos”),也就是说只要java.library.path中存在 libtaos.so,程序就可正常运行,不必安装TDengine的客户端,因为java.library.path是在jvm启动时就设置好的,要更改它的值,可以采用动态加载,采用如下方法解决了加载libtaos.so的问题:
(1) 将driver端libtaos.so发送到各个executor
spark.sparkContext.addFile("/path/to/libtaos.so")
(2) 重写Spark中JdbcUtils类中的createConnectionFactory方法,添加
loadLibrary(new File(SparkFiles.get("libtaos.so")).getParent)
进行java.library.path的动态加载
def createConnectionFactory(options: JDBCOptions): () => Connection = {
val driverClass: String = options.driverClass
() => {
loadLibrary(new File(SparkFiles.get("libtaos.so")).getParent)
DriverRegistry.register(driverClass)
val driver: Driver = DriverManager.getDrivers.asScala.collectFirst {
case d: DriverWrapper if d.wrapped.getClass.getCanonicalName == driverClass => d
case d if d.getClass.getCanonicalName == driverClass => d
}.getOrElse {
throw new IllegalStateException(
s"Did not find registered driver with class $driverClass")
}
driver.connect(options.url, options.asConnectionProperties)
}
}
(3) loadLibrary方法如下
def loadLibrary(libPath: String): Unit = {
var lib = System.getProperty("java.library.path")
val dirs = lib.split("😊
if (!dirs.contains(libPath)) {
lib = lib + s"😒{libPath}"
System.setProperty("java.library.path", lib)
val fieldSysPath = classOf[ClassLoader].getDeclaredField("sys_paths")
fieldSysPath.setAccessible(true)
fieldSysPath.set(null, null)
}
}
在yarn模式下一定要给url设置charset和locale,如
charset=UTF-8&locale=en_US.UTF-8
否则container可能会异常退出。
- libtaos.so其他加载方式
本来还尝试了jna加载libtaos.so的方式,此方式只需将libtaos.so放入项目resources中,程序变回自动搜索到so文件,奈何不会改tdengine中c的代码。
taos> create database test;
taos>use test;
这里我们创建一个和tdengine自带库log中log表结构一致的表,后提直接从log.log读数据存储到test.log_cp
taos> create table log_cp(
-> ts TIMESTAMP,
-> level TINYINT,
-> content BINARY(80),
-> ipaddr BINARY(15)
-> )
可以通过“新建连接”按钮,添加新的服务器进行管理。需要提供数据库服务器的ip地址、restful服务的端口号(默认为6041)注意这里不是6030端口了,用的是restful端口6041、连接服务器的用户名和密码(默认为root:taosdata)
保留配置文件
/etc/taos/taos.cfg
数据库文件
/var/lib/taos
日志文件
/var/log/taos
配置文件目录:/etc/taos/taos.cfg, 软链接到/usr/local/taos/cfg/taos.cfg;
数据库目录:/var/lib/taos, 软链接到/usr/local/taos/data;
日志目录:/var/log/taos, 软链接到/usr/local/taos/log;
<!--server端和client端2.1.1.0版本,这里jar包用2.0.12版本稳定-->
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<version>2.0.24</version>
</dependency>
配置数据源
taos:
datasource:
不用restful则用这个driver类: com.taosdata.jdbc.TSDBDriver
用restful风格则用:com.taosdata.jdbc.rs.RestfulDriver类
driver-class-name: com.taosdata.jdbc.TSDBDriver
用restful的话则用jdbc:TAOS-RS,6041端口默认是reftful
url: jdbc:TAOS://xxx.xxx.x.xx:6030/db?timezone=Asia/Beijing&charset=UTF-8
username: root
password: taosdata
SpringBoot + MyBatis + taosDB时序数据库 + MySql ,多数据源配置
https://blog.csdn.net/qq_32512453/article/details/113752810
TDengine时序数据库第二篇——SpringBoot+MySql+TDengine+Mybatis双数据源搭建
https://blog.csdn.net/qq_36608921/article/details/108119386
安装过程中没有目录选择,直接就是默认C:\TDengine
客户端安装好之后,可以查看目录C:\TDengine\driver和C:\Windows\System32目录下,是有taos.dll文件的
https://blog.csdn.net/Tomonkey/article/details/108807914
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)例如:主机名是bigserver,域名是mycompany.com,那么FQDN就是bigserver.mycompany.com。
FQDN = Hostname + DomainName
https://baike.baidu.com/item/FQDN/5102541?fr=aladdin
url: jdbc:TAOS-RS://192.168.40.129:6041/demo?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
接下来,我们大致说一下项目想要成功连接taosDB数据库,需要哪些配置和可能会遇到的坑:
1)项目服务如果需要连接到taosdb数据库则需要在本机或者服务器(项目所部署的机器)安装客户端,而且要求客户端版本必须和服务端版本一致,否则连接会失败;
连接报错:java.lang.UnsatisfiedLinkError: no taos in java.library.path
原因:程序没有找到依赖的本地函数库 taos。
解决方法:windows 下可以将 C:\TDengine\driver\taos.dll 拷贝到 C:\Windows\System32\ 目录下 ;
linux 下将建立如下软链 ln -s /usr/local/taos/driver/libtaos.so.x.x.x.x /usr/lib/libtaos.so 即可。
2)TAOSDB只支持64位JDK
java.lang.UnsatisfiedLinkError: taos.dll Can't load AMD 64 bit on a IA 32-bit platform
原因:目前 TDengine 只支持 64 位 JDK。
解决方法:重新安装 64 位 JDK。
-
若配置完成后取taosdb数据库的数据失败,提示不能解析FQDN,则需要在电脑上配置hosts文件,将taosdb数据库的FQDN名称配置到hosts文件中
以Win10为例,大家需要修改C:\Windows\System32\drivers\etc 目录下的hosts文件 ;
而Linux系统中,修改/etc/hosts
在文件中添加 如下示例 192.168.1.1 lnx ,其中IP为taosdb数据库的ip,lnx则为taosdb数据库的FQDN名称
D:\noteMe\md\时序数据库
RapidsDB是柏睿数据自主研发的基于分布式架构的全内存数据库,柏睿数据大数据分析平台Rapids Data Platform(简称RDP)五大数据库系列产品之一,除此之外,还有全内存分布式流数据库Rapids StreamDB、分布式分析型数据库 Rapids UXDB、企业级交易型数据库 Rapids TXDB 、事务与分析混合型数据库 Rapids HybirdDB。
https://www.modb.pro/wiki/560
http://www.boraydata.cn/
http://127.0.0.1:8080/swagger-ui.html
http://localhost:8080/doc.html
http://127.0.0.1:8081/swagger-ui.html
http://localhost:8081/doc.html
http://localhost:8081/doc.html
http://localhost:8081/doc.html?cache=1&lang=zh
http://localhost:8081/druid/index.html
admin/123456
http://192.168.40.129:9000
admin/cw12345678
select now from demo.dual;
select now from demo.t0;
insert into demo.t0;
select count(*) from demo.weather ;
select tbname from demo.weather;
select ts, temperature, humidity, location, groupid from demo.weather order by ts desc limit 1 offset 2;
select server_status();
https://github.com/alibaba/druid
https://github.com/alibaba/druid/wiki/常见问题
https://help.aliyun.com/document_detail/137663.html
https://blog.csdn.net/zt15732625878/article/details/84027622
https://blog.csdn.net/qq_26383975/article/details/123424200
https://blog.csdn.net/u013810234/article/details/119202706
地址:https://github.com/skye0207/TDengineGUI
地址:https://www.taosdata.com/blog/2020/08/27/1767.html
https://blog.csdn.net/taos_data/article/details/125853539
https://github.com/taosdata/taos-connector-jdbc/blob/main/README-CN.md
https://hub.fastgit.xyz/taosdata/taos-connector-jdbc/blob/main/README-CN.md
https://github.com/taosdata/taos-connector-jdbc/blob/main/README-CN.md
中文乱码,通过charset参数解决:
jdbc: TAOS://hadoop1:6030/demo?charset=CP936
taos-jdbcdriver 是 TDengine 的官方 Java 语言连接器,Java 开发人员可以通过它开发存取 TDengine 数据库的应用软件。taos-jdbcdriver 实现了 JDBC driver 标准的接口,并提供两种形式的连接器。一种是通过 TDengine 客户端驱动程序(taosc)原生连接 TDengine 实例,支持数据写入、查询、订阅、schemaless 接口和参数绑定接口等功能,一种是通过 taosAdapter 提供的 REST 接口连接 TDengine 实例(2.0.18 及更高版本)。REST 连接实现的功能集合和原生连接有少量不同。
使用 REST 连接,不依赖 TDengine 客户端驱动,可以跨平台,更加方便灵活,但性能比原生连接器低约 30%。
原生连接支持的平台和 TDengine 客户端驱动支持的平台一致。 REST 连接支持所有能运行 Java 的平台。
一些个人做的工具网站
https://minhaskamal.github.io/DownGit/#/home
http://zhoudaxiaa.gitee.io/downgit/#/home
https://www.itsvse.com/downgit
https://shrill-pond-3e81.hunsh.workers.dev/
Class.forName("com.taosdata.jdbc.TSDBDriver");
String jdbcUrl = "jdbc:TAOS://taosdemo.com:6030/test?user=root&password=taosdata";
Connection conn = DriverManager.getConnection(jdbcUrl);
jdbc:TAOS://192.168.40.129:6030/demo?user=root&password=taosdata
jdbc:TAOS://192.168.40.129:6030/demo?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
C://TDengine/cfg/taos.cfg
jdbc:TAOS-RS://192.168.40.129:6041/demo?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
jdbc:TAOS-RS://192.168.40.129:6041/demo
root
taosdata
https://docs.taosdata.com/train-faq/faq/
工具下载地址:https://swh.app/zh/
Windows下IntelliJ IDEA工具连接TDEngine集群环境
https://www.pudn.com/news/62b84218f3cc394cf1cd0343.html
w1
192.168.40.129 node-taos node-129 tdengine-server
1、连接字符串中的 不能使用IP。
2、连接字符串中的 域名/IP 必须和安装tdengine 的服务器的域名(FQDN ,eg:tdengine-server)保持一致
tdengine-server
select * from weather;
select * from weather limit 1;
http://wjhsh.net/MysticBoy-p-13066385.html
https://gitee.com/maikebing/Taos.Studio/releases/tag/v1.0.9
https://zhidao.baidu.com/question/601889565.html
https://gitee.com/xielaoshi99/balloonfish#balloonfish河豚
balloonfish(河豚)
https://docs.taosdata.com/third-party/IDEA/
https://hub.fastgit.xyz/TeamStuQ/skill-map.git
git clone https://github.com/taosdata/taos-connector-jdbc.git -b 2.0.40
git clone https://github.com/taosdata/taos-connector-jdbc.git -b 2.0.36
git clone https://hub.fastgit.xyz/taosdata/taos-connector-jdbc.git -b 2.0.36
git clone https://hub.fastgit.xyz/taosdata/taos-connector-jdbc.git -b 2.0.39
mvn clean package -Dmaven.test.skip=true
mvn taos-jdbcdriver clean package -Dmaven.test.skip=true
https://docs.taosdata.com/develop/connect/#!
https://docs.taosdata.com/reference/connector/java/
https://docs.taosdata.com/train-faq/faq/#5-遇到错误unable-to-establish-connection-怎么办
https://www.taosdata.com/engineering/1824.html
systemctl status taosd
hostname -f
FQDN (Fully Qualified Domain Name)
FQDN(fully qualified domain name,完全限定域名)是internet上特定计算机或主机的完整域名。FQDN由两部分组成:主机名和域名。例如,假设邮件服务器的FQDN可能是mail.taosdata.com。主机名是mail,主机位于域名taosdata.com中。
DNS(Domain Name System),负责将FQDN翻译成IP,是互联网绝大多数应用的寻址方式。
Windows
由于Windows暂时只支持部署客户端,所以我们只需要配置FQDN的解析即可。
以Win10为例,大家需要修改C:\Windows\System32\drivers\etc 目录下的hosts文件
在文件中添加
10.211.55.14 node1
10.211.55.15 node2
10.211.55.16 node3
Linux
以node1节点为例,我们需要修改/etc/hostname和/etc/hosts
修改/etc/hostname,修改完成后需要重启才能生效
修改/etc/hosts
vi /etc/hostname
//将文件内容修改为node1
vi /etc/hosts
//添加一下三行
10.211.55.14 node1
10.211.55.15 node2
10.211.55.16 node3
Ubuntu 使用 ufw status,CentOS 使用 firewall-cmd --list-port
https://www.taosdata.com/engineering/1816.html
https://www.taosdata.com/engineering/2943.html
1)在服务器运行taos内嵌的网络连通检测的服务端功能,如:taos -n server -P 6030 -e 6042 -l 1000;
2)在客户端运行taos内嵌的网络连通检测的客户端功能,如:taos -n client -h host -P 6030 -e 6042 -l 1000;
./taos -n client -h ubuntu-7060 -P 6030 -e 6042 -l 16000
taos -n clients
6041是HTTP模块使用的端口、6042是arbitrator使用的端口,此方法无法检测这两个端口。只能使用第一种方法进行检测。
从 2.1.8.0 版本开始,taos 工具新提供了一个网络速度诊断的模式,可以对一个正在运行中的 taosd 实例或者 taos -n server 方式模拟的一个服务端实例,以非压缩传输的方式进行网络测速
taos -n speed -N 10 -l 100000000 -S tcp
taos -n speed -h
taos -n fqdn
taos -n fqdn -h
TDengine 应该已经是适配 mybatis-plus 了
这儿有个 demo:https://github.com/taosdata/TDengine/tree/develop/examples/JDBC/mybatisplus-demo
容量规划: https://docs.taosdata.com/operation/planning/
https://www.taosdata.com/engineering/11076.html
DBeaver 看了这篇文章吗:https://www.taosdata.com/engineering/12880.html
DBeaver 最新版吗,换为 22.1.2
/var/log/taos/taosinfo.0查看日志,有下面的错
select * from meters where ts >= NOW - 1m; 还是会查全部数据有遇到么?
可以挂载宿主机 etc 下的 timezone 这些文件,也可以 docker run 的时候带上 -e TZ=Asia/Shanghai 环境变量
https://docs.taosdata.com/develop/insert-data/opentsdb-json/#
SELECT FIRST() FROM iot.electric249_9 和 SELECT LAST() FROM iot.electric249_9
SELECT FIRST() FROM iot.electric249_9 union all SELECT LAST() FROM iot.electric249_9
SELECT FIRST(),LAST() FROM iot.electric249_9
select * from
(
SELECT FIRST() FROM iot.electric where type=249 and meterid=9 and ts between now-5m and now
union all
SELECT LAST() FROM iot.electric where type=249 and meterid=9 and ts between now-5m and now
)
select last(ts),first(ts),last(voltage)-first(voltage) from meters ;
cloudbeaver怎么添加TD的驱动
https://github.com/taosdata/TDengine/issues/15906
https://mp.weixin.qq.com/s/uJEQwN0NnmSTBAMOecAtoA
https://blog.csdn.net/COCO56/article/details/107134496
https://www.taosdata.com/engineering/12205.html
是新添加的吗,看一下第三个问题:集群扩容后,DNode 状态为 Offline 该如何排查?
https://docs.taosdata.com/develop/insert-data/opentsdb-json/#
json 只支持opentsdb 格式
已通过https://www.taosdata.com/engineering/11076.html排查,但是这个似乎是针对本地安装而不是docker运行
NCHAR 最大长度是 4093 个字符(约16k)
jdbc:TAOS-RS://node-taos:6041/demo
jdbc:TAOS://192.168.40.129:6030/demo?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
jdbc:TAOS-RS://node-taos:6041/{database}
D:\Java\jars
root/taosdata
/root/work/taos/data/
root@myTDengine:~# taos
Welcome to the TDengine Command Line Interface, Client Version:3.0.0.1
Copyright (c) 2022 by TDengine, all rights reserved.
Server is Community Edition.
sudo docker run -d --name "myTDengine" -h "myTDengine" -p 6041:6041 -p 6030-6035:6030-6035 -p 6030-6035:6030-6035/udp -v /cw/v-TDengine/taos/log:/var/log/taos -v /cw/v-TDengine/taos/data:/var/lib/taos tdengine/tdengine:latest
docker exec -it cd849a7764fc /bin/bash
docker exec -it 70f4ca53ebc3 /bin/bash
docker exec -it myTDengine /bin/bash
docker exec -it myTDengine taos
docker exec -it cd849a7764fc /bin/bash
echo 127.0.0.1 tdengine |sudo tee -a /etc/hosts
echo 127.0.0.1 myTDengine |sudo tee -a /etc/hosts
容器外: /cw/v-TDengine/taos/data
/root/work/taos/data
容器内: /var/lib/taos
myTDengine
192.168.40.129
SET MAX_BINARY_DISPLAY_WIDTH <nn>;
SET MAX_BINARY_DISPLAY_WIDTH 1204;
use test;
show create database test;
show create table d99;
show create table meters;
CREATE STABLE `meters` (`ts` TIMESTAMP, `current` FLOAT, `voltage` INT, `phase` FLOAT) TAGS (`groupid` INT, `location` VARCHAR(16));
CREATE STABLE `meters2` (`ts` TIMESTAMP, `current` FLOAT, `voltage` INT, `phase` FLOAT) TAGS (`groupid` INT, `location` VARCHAR(16));
CREATE TABLE `d99` USING `meters` (`groupid`, `location`) TAGS (1, "Palo Alto")
select * from d99 >> /var/lib/taos/data.csv;
insert into d99 file '/var/lib/taos/data.csv';
insert into tb2_0 file '/var/lib/taos/2.csv';
insert into unite_2 file '/var/lib/taos/2.csv';
insert into unite_2 file '/var/lib/taos/2.csv';
insert into tb5_0 file '/var/lib/taos/4.csv';
insert into tb5_0 file '/var/lib/taos/5.csv';
insert into ok.tb5_0 file '/var/lib/taos/4.csv';
insert into ok.tb5_0 file '/var/lib/taos/5.csv';
select * from unite_5;
select count(1) from ok.unite_5;
source "/var/lib/taos/建表语句3.sql";
du -sh /var/lib/taos/vnode --exclude='wal'
du -sh /var/lib/taos/vnode/vnode21 --exclude='wal'
SELECT _block_dist() FROM { tb_name | stb_name }
SELECT _block_dist() FROM ok.unite_5;
desc d99;
desc meters;
SHOW STABLES ;
SHOW STABLES LIKE "me%";
SHOW CREATE STABLE meters;
DESCRIBE test.meters;
DESCRIBE [db_name.]meters;
DROP STABLE [IF EXISTS] [db_name.]meters
select max(current) from meters partition by location interval(10m)
SELECT AVG(current), MAX(current), APERCENTILE(current, 50) FROM meters
WHERE ts>=NOW-1d and ts<=now
INTERVAL(10m)
FILL(PREV);
INSERT INTO d100 USING meters TAGS ('California.SanFrancisco', 2) VALUES ('2021-07-13 14:06:32.272', 10.2, 219, 0.32);
INSERT INTO d100 USING meters TAGS (2,'California') VALUES ('2021-07-13 14:06:32.272', 10.2, 219, 0.32);
INSERT INTO d21001 USING meters TAGS ('California.SanFrancisco', 2) VALUES ('2021-07-13 14:06:34.630', 10.2, 219, 0.32) ('2021-07-13 14:06:35.779', 10.15, 217, 0.33)
d21002 USING meters (groupId) TAGS (2) VALUES ('2021-07-13 14:06:34.255', 10.15, 217, 0.33)
d21003 USING meters (groupId) TAGS (2) (ts, current, phase) VALUES ('2021-07-13 14:06:34.255', 10.27, 0.31);
curl -u root:taosdata -d "show databases" localhost:6041/rest/sql
curl -u root:taosdata -d "show databases" localhost:6041/rest/sql
taos -h h1.taos.com -s "use db; show tables;"
taos -h myTDengine -s "use test; show tables;"
git checkout -b 分支名
git checkout tag_name
git checkout -b branch_name tag_name
git checkout -b 3.0.0 my3.0.0
$ git fetch origin tag <tagname>
git ls-remote --tags origin
mvn clean install -Dmaven.test.skip=true
mvn taos-jdbcdriver clean package -Dmaven.test.skip=true
git checkout 3.0.0
git fetch origin tag 3.0.0
create database if not exists ok;
USE ok;
CREATE TABLE unite_1 (
ts timestamp,
id bigint ,
head nchar(50),
frame_type nchar(50));
DROP TABLE IF EXISTS unite_1;
CREATE TABLE unite_1 (
ts timestamp,
id bigint ,
head nchar(50),
frame_type nchar(50),P0 nchar(50),
T45_limit nchar(50),
SWO_1_8 nchar(50),
EngStateMachine_3_6 nchar(50)
);
DB error: invalid operation: row length exceeds max length (0.000842s)
总长度不能超过 16KB
create stable if not exists power(ts timestamp, voltage int, current float, temperature float) tags(sn int, city nchar(64), groupid int);
create table if not exists device1 using power tags(1, "太原", 1);
create table if not exists device2 using power tags(2, "西安", 2);
insert into device1 values("2021-09-04 21:03:38.734", 1, 1.0, 1.0);
insert into device2 values("2021-09-04 21:03:40.734", 2, 2.0, 2.0);
insert into device2 values("2021-09-04 21:03:40:734", 2, 2.0, 2.0);
insert into ok.tb_0 file '/usr/local/taos/data.csv';
insert into ok.tb_0 file '/var/lib/taos/1.csv';
insert into ok.tb_1 file '/var/lib/taos/1.csv';
insert into ok.tb2_0 file '/var/lib/taos/2.csv';
insert into ok.tb3_0 file '/var/lib/taos/2.csv';
insert into ok.tb_0 values("2018-01-01 00:00:00.002",43690,"47907","202","0","0","0","0","0","0","0","0","0","0","0","0","0","0","-5933","0","101","99","0","0","0","748","1296","1868","5018","3000","31","0","-5900","0","40","20490","7740","0","10800","0","0","0","0","-1","0","-5925","0","7169","2","432","0","0","0","0","0","0","0","0","32768","0","0","17","648","16416","0","0","1","40","1296","-5","1599","2510","0","0","0","97","31","-5934","-3546","2102","0","0","0","4407","872","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","19026","8611","22101","1","0","0","0","0","0","0","0","0","1","1","1","0","0","1","0","0","0","0","0","0","1","1","0","1","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1","0","1","0","0","0","0","0","0","1","0","0","0","1","0","1","0","0","0","0","0","0","0","0","0","0","0","1","0","0","0","0","0","0","0","0","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1","0");
select * from power;
select * from tb_0;
select * from unite_1;
select count(1) from unite_1;
select count(1) from unite_2;
select ts,id,head from unite_1;
select ts,id,head,chkstatemachine_3_5 from unite_1;
select ts,head,chkstatemachine_3_5 from unite_2 limit 1;
select * from unite_2 limit 1;
select * from unite_2 where chkstatemachine_3_5='1' limit 1;
select ts,head,chkstatemachine_3_5 from unite_2 where chkstatemachine_3_5='0' limit 1;
select ts,head,chkstatemachine_3_5 from unite_2 where chkstatemachine_3_5='0' limit 2;
select count(1) from tb2_0;
select count(1) from tb2_1;
-- insert into ok.tb_0
taos> desc unite_1;
Field | Type | Length | Note |
=================================================================================
ts | TIMESTAMP | 8 | |
id | BIGINT | 8 | |
head | NCHAR | 30 | |
frame_type | NCHAR | 30 | |
frame_length | NCHAR | 30 | |
timestamp_low | NCHAR | 30 | |
timestamp_high | NCHAR | 30 | |
failure_identification | NCHAR | 30 | |
time_yyyymm | NCHAR | 30 | |
time_ddhh | NCHAR | 30 | |
time_mmss | NCHAR | 30 | |
eng_work_hh | NCHAR | 30 | |
eng_work_mmss | NCHAR | 30 | |
===
sysstate4_8 | NCHAR | 30 | |
sysstate4_9 | NCHAR | 30 | |
sysstate4_10 | NCHAR | 30 | |
sysstate4_11 | NCHAR | 30 | |
sysstate4_12 | NCHAR | 30 | |
sysstate4_13 | NCHAR | 30 | |
sysstate4_14 | NCHAR | 30 | |
engstatemachine_0_2 | NCHAR | 30 | |
engstatemachine_3_6 | NCHAR | 30 | |
engstatemachine_7_9 | NCHAR | 30 | |
chkstatemachine_0_2 | NCHAR | 30 | |
chkstatemachine_3_5 | NCHAR | 30 | TAG |
CREATE DATABASE db_name PRECISION 'ns';
SHOW DATABASES;
show tables;
SHOW CREATE DATABASE db_name;
SHOW CREATE DATABASE ok;
SHOW STABLES [LIKE tb_name_wildcard];
-- 查询超级表有多少个子表
select tbname from electricmeter [ where tbname in ( 'd001947' )];
-- 查所有电表某小时最新电量
select ts,last(imp_ep) from electricmeter where ts < 1602378000000 group by device;
/cw/v-TDengine/taos/log:/var/log/taos -v /cw/v-TDengine/taos/data:/var/lib/taos tdengine/tdengine:latest
taos> source "/usr/local/taos/data.sql";
taos> source "/var/lib/taos/unite_20220725103016.sql";
source "/var/lib/taos/tb2.sql";
show tables;
taos> insert into ok.device1 file '/usr/local/taos/data.csv';
Query OK, 3 of 3 row(s) in database (0.002303s)
使用2.0及其以上版本,默认支持1024列;2.0之前的版本,TDengine最大允许创建250列的表。但是如果确实超过限值,建议按照数据特性,逻辑地将这个宽表分解成几个小表。
docker pull tdengine/tdengine:2.2.0.5
docker search tdengine/tdengine:2.2.0.5
docker pull tdengine/tdengine:latest
docker pull tdengine/tdengine:3.0.0.1
sudo docker run -d --name "myTDengine" -h "myTDengine" -p 6041:6041 -p 6030-6035:6030-6035 -p 6030-6035:6030-6035/udp -v /cw/v-TDengine/taos/log:/var/log/taos -v /cw/v-TDengine/taos/data:/var/lib/taos tdengine/tdengine:latest
#--name "myTDengine" ##指定容器名称便于访问
#-h "myTDengine" ##指定容器主机名,用作TDengine的FQDN
#-p 6041:6041 ##映射RESTful端口
#-p 6030-6035:6030-6035
#-p 6030-6035:6030-6035/udp ##映射taos客户端使用端口,必须包含TCP和UDP
#-v /cw/v-TDengine/taos/log:/var/log/taos ##映射日志目录
#-v /cw/v-TDengine/taos/data:/var/lib/taos ##映射数据目录
#tdengine/tdengine:latest ## 最新的映像版本名称为tdengine
mkdir -p /cw/v-TDengine/taos/log
mkdir -p /cw/v-TDengine/taos/data
root/taosdata
docker image inspect (docker image名称):latest|grep -i version
https://blog.csdn.net/ztx114/article/details/85096959
地址如下:https://hub.docker.com
https://hub.docker.com/r/tdengine/tdengine/tags
https://registry.hub.docker.com/v1/repositories/sameersbn/postgresql/tags
curl https://registry.hub.docker.com/v1/repositories/${docker_img}/tags | python3 -m json.tool | more
https://registry.hub.docker.com/v1/repositories/tdengine/tdengine/tags
https://docs.taosdata.com/taos-sql/table/#修改子表标签值
https://docs.taosdata.com/taos-sql/stable/#创建超级表
https://docs.taosdata.com/2.6/taos-sql/stable/
https://www.cnblogs.com/caibh/p/13820390.html
https://docs.taosdata.com/reference/config/#监控相关
与原生连接方式不同,REST 接口是无状态的。在使用 JDBC REST 连接时,需要在 SQL 中指定表、超级表的数据库名称。
以上示例,建立一个到 hostname 为 taosdemo.com,端口为 6030/6041,数据库名为 test 的连接。这个连接在 url 中指定了用户名(user)为 root,密码(password)为 taosdata,并在 connProps 中指定了使用的字符集、语言环境、时区、是否开启批量拉取等信息。
properties 中的配置参数如下:
TSDBDriver.PROPERTY_KEY_USER:登录 TDengine 用户名,默认值 'root'。
TSDBDriver.PROPERTY_KEY_PASSWORD:用户登录密码,默认值 'taosdata'。
TSDBDriver.PROPERTY_KEY_BATCH_LOAD: true:在执行查询时批量拉取结果集;false:逐行拉取结果集。默认值为:false。
TSDBDriver.PROPERTY_KEY_BATCH_ERROR_IGNORE:true:在执行 Statement 的 executeBatch 时,如果中间有一条 SQL 执行失败,继续执行下面的 sq 了。false:不再执行失败 SQL 后的任何语句。默认值为:false。
TSDBDriver.PROPERTY_KEY_CONFIG_DIR:仅在使用 JDBC 原生连接时生效。客户端配置文件目录路径,Linux OS 上默认值 /etc/taos,Windows OS 上默认值 C:/TDengine/cfg。
TSDBDriver.PROPERTY_KEY_CHARSET:客户端使用的字符集,默认值为系统字符集。
TSDBDriver.PROPERTY_KEY_LOCALE:仅在使用 JDBC 原生连接时生效。 客户端语言环境,默认值系统当前 locale。
TSDBDriver.PROPERTY_KEY_TIME_ZONE:仅在使用 JDBC 原生连接时生效。 客户端使用的时区,默认值为系统当前时区。
此外对 JDBC 原生连接,通过指定 URL 和 Properties 还可以指定其他参数,比如日志级别、SQL 长度等。更多详细配置请参考客户端配置。
配置参数的优先级
通过前面三种方式获取连接,如果配置参数在 url、Properties、客户端配置文件中有重复,则参数的优先级由高到低分别如下:
JDBC URL 参数,如上所述,可以在 JDBC URL 的参数中指定。
Properties connProps
使用原生连接时,TDengine 客户端驱动的配置文件 taos.cfg
例如:在 url 中指定了 password 为 taosdata,在 Properties 中指定了 password 为 taosdemo,那么,JDBC 会使用 url 中的 password 建立连接。
然后通过驱动创建数据源。TDengine 的 JDBC URL 规范为:jdbc:[TAOS|TAOS-RS]😕/[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]
使用 RESTful 连接,此处 URL 示例为:jdbc:TAOS-RS://VM-24-8-centos:6041/log( 此处使用域名需要在 Hosts 文件内添加解析;URL 内的 locale、timezone 参数在 RESTful 连接中不生效)
SHOW log.stables
taos -V
C:\Windows\System32\drivers\etc
TDengine,开源高效的物联网大数据平台,官网:www.taosdata.com。TDengine提供了丰富的应用程序开发接口,其中包括C/C++、JAVA、Python、RESTful、Go等,便于用户快速开发应用。本教程从下载安装开始,具体介绍JDBC Connector的使用。
https://www.bilibili.com/video/BV1dT4y1F7m9?vd_source=1032f23eb62c69e9a561a8f4d66fd17a
https://gitee.com/bhdweb/tdengine-workbench
https://gitee.com/bhdweb/tdengine-workbench/releases
https://blog.csdn.net/zhaolulu916/article/details/126223722
https://dbadadong.blog.csdn.net/article/details/122241141
https://blog.csdn.net/weixin_43700866/article/details/118514335
http://www.java1234.com/a/javabook/yun/
https://blog.csdn.net/qingqui_/article/details/124083909
https://blog.csdn.net/weixin_45970271/article/details/124180709
- [] TDengine那个可视化工具比较好用,推荐一下
idea database 或 datagrip
TD-WorkBench
TD-Workbench是一个基于electron构建的,针对时序数据库TDengine的图形化管理工具。具有跨平台、易于使用、版本适应性强等特点
druid配置
初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
spring.datasource.druid.initial-size=1
最小连接池数量
spring.datasource.druid.min-idle=1
最大连接池数量
spring.datasource.druid.max-active=20
获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。建议配置2000ms
spring.datasource.druid.max-wait=2000
1) Destroy线程定时监测的间隔, Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
spring.datasource.druid.time-between-eviction-runs-millis=60000
连接保持空闲而不被驱逐的最长时间。建议值:5* timeBetweenEvictionRunsMillis
spring.datasource.druid.min-evictable-idle-time-millis=300000
用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
spring.datasource.druid.validation-query=SELECT 1
建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
spring.datasource.druid.test-while-idle=true
申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。建议值:false
spring.datasource.druid.test-on-borrow=false
归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。建议值:false
spring.datasource.druid.test-on-return=false
是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。
spring.datasource.druid.pool-prepared-statements=true
要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat,日志用的filter:log4j, 防御sql注入的filter:wall
spring.datasource.druid.filters=stat,wall,log4j,log4j2
建立新连接时将发送到JDBC驱动程序的连接属性。字符串的格式必须为[propertyName = property;] *注 - “用户”和“密码”属性将被明确传递,因此不需要在此处包含。
spring.datasource.druid.connect-properties.=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
要打开Druid监控页面需要做以下配置
这个一定要加,不然【http://localhost:8080/druid/index.html】页面打不开
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
spring.datasource.druid.stat-view-servlet.deny=192.168.1.73
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123456
spring.datasource.druid.stat-view-servlet.reset-enable=false
这个一定要加,不然【http://localhost:8081/druid/index.html】页面打不开
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=.js,.gif,.jpg,.png,.css,.ico,/druid/*
spring.datasource.druid.web-stat-filter.session-stat-enable=true
李白:赤伏起颓运,卧龙得孔明。
杜甫:功盖三分国,名成八阵图。
李商隐:管乐有才真不忝,梁父吟成恨有余。
杜牧:子夜星才落,鸿毛鼎便移。
元稹:英才过管乐,妙策胜孙吴。
刘禹锡:轩皇传上略,蜀相运神机。
白居易:前后出师遗表在,令人一览泪沾襟。
孟浩然:谁识躬耕者,年年梁甫吟。
陈子昂:犹悲坠泪碣,尚想卧龙图。
岑参:遗庙空萧然,英灵贯千岁。
杨万里:四川全国牙旗底,万里长江羽扇中。
王安石:武侯当此时,龙卧独摧藏。
范仲淹:留侯武侯者,将相俱能任。
王阳明:八阵风云布时雨,七擒牛马壮秋风。
苏轼:诸葛来西国,千年爱未衰。
辛弃疾:看渊明,风流酷似,卧龙诸葛。
朱熹:英姿俨绘事,凛若九原作。
罗隐:时来天地皆同力,运去英雄不自由。
文天祥:天下皆传清献节,人心自有武侯碑。
陆游:出师一表真名世,千载谁堪伯仲间!
古风安利:
1,忘川风华录,站内up主
2,千峰落雪,站内有
3,喧嚷,站内有
4,白首黄泉,站内有
5,不溯,梦璟saya
6,未见青山老,以冬
7,菁华浮梦,Winky诗
8,千秋诉,梦璟saya
9,天地无疆,云泣
10,千樽雪
11,涉川,不才
12,参商,不才
tags(tail int);
tail -100f taosdlog.0
ALTER LOCAL local_option
local_option: {
'resetLog'
| 'rpcDebugFlag' 'value'
| 'tmrDebugFlag' 'value'
| 'cDebugFlag' 'value'
| 'uDebugFlag' 'value'
| 'debugFlag' 'value'
}
ALTER LOCAL local_option
local_option: {
'resetLog'
| 'rpcDebugFlag' 'value'
| 'tmrDebugFlag' 'value'
| 'cDebugFlag' 'value'
| 'uDebugFlag' 'value'
| 'debugFlag' 'value'
}
- 如何在命令行程序 taos 中临时调整日志级别
为了调试方便,从 2.0.16 版本开始,命令行程序 taos 新增了与日志记录相关的两条指令:
ALTER LOCAL flag_name flag_value;
ALTER LOCAL debugFlag 131;
ALTER LOCAL debugFlag 135;
debugFlag 135
其含义是,在当前的命令行程序下,修改一个特定模块的日志记录级别(只对当前命令行程序有效,如果 taos 命令行程序重启,则需要重新设置):
flag_name 的取值可以是:debugFlag,cDebugFlag,tmrDebugFlag,uDebugFlag,rpcDebugFlag
flag_value 的取值可以是:131(输出错误和警告日志),135( 输出错误、警告和调试日志),143( 输出错误、警告、调试和跟踪日志)
ALTER LOCAL RESETLOG;
其含义是,清空本机所有由客户端生成的日志文件。
https://www.taosdata.com/docs/cn/v2.0/faq
https://docs.taosdata.com/2.6/train-faq/faq/
https://www.bookstack.cn/read/TDengin-2.0-zh/spilt.11.c8cf666a54657667.md
https://docs.taosdata.com/train-faq/faq/#11-如何在命令行程序-taos-中临时调整日志级别
其含义是,在当前的命令行程序下,清空本机所有客户端生成的日志文件(resetLog),或修改一个特定模块的日志记录级别(只对当前命令行程序有效,如果 taos 命令行程序重启,则需要重新设置):
value 的取值可以是:131(输出错误和警告日志),135( 输出错误、警告和调试日志),143( 输出错误、警告、调试和跟踪日志)。
为了保证有足够的 debug 信息,如果问题能够重复,请修改/etc/taos/taos.cfg 文件,最后面添加一行“debugFlag 135"(不带引号本身),然后重启 taosd, 重复问题,然后再递交。也可以通过如下 SQL 语句,临时设置 taosd 的日志级别。
alter dnode <dnode_id> debugFlag 135;
但系统正常运行时,请一定将 debugFlag 设置为 131,否则会产生大量的日志信息,降低系统效率。
https://docs.taosdata.com/reference/config/#
请问下 SHOW CREATE DATABASE 查看建表语句,显示不全 要怎么处理呢
加一个 \G