一、最开始是想往InfluxDB数据库里批量添加一些数据。
表结构为:
name
是名字,
unit
是类型,
value
是值。
其中
name
和
unit
是
tag
,
value
是
field
。
使用代码批量添加的数据,代码如下:
我这里是读取了一个本地csv文件,文件里有20多条数据。
二、代码错误 批量插入的后果
通过代码可以看出unit字段应该是写成tag的,由于代码错误,插入数据库后,数据库内容变成了:
多出来了一列
unit_1
。
查看数据库结构:
tagKey
:
fieldKey
:
悲惨的发现数据库结构发生了变化,现在查询出来的结果中
unit
是
field
列,
unit_1
是
tag
列。
在使用查询语句的时候,也会受到一些影响。有兴趣的可以试一下。
那我现在想要查询出
unit_1
为搜索条件的结果时,使用的SQL语句为:
SELECT * FROM "tablename" WHERE "unit"::tag='type' and time >= '2021-09-01 00:00:00' tz('Asia/Shanghai')
在unit
后面加上::tag
。
三、后续问题
我这边试了很多方法,想要表结构恢复原状的,但是都没有成功。
有办法的小伙伴可以提供一下的话会非常感谢的。
最坏的打算是备份数据库数据,删除表,然后修改数据列的名字,最后再批量导入数据库。其中表要删干净,包括表结构也要删掉,否则还是会和之前一样,出现两列名字。https://segmentfault.com/q/1010000022621898
我这边做不了最坏的打算,数据库数据大概2800多万,实在是耗时巨大,只能修改查询语句的代码,在unit
后面加上::tag
,使用代码查询出来的结果就正确了。
例如1:
例如2:
代码里如果不这样修改,查询也不会报错,但是查询结果会为空,这个就是有兴趣的小伙伴试一试查询sql语句就清楚了。
四、需谨慎
还是多核对几遍,或者找个地方测试一下,比较好。
欢迎指正!
首先我们向一个表中插入数据,具体格式如下,
insert <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
顺序...
InfluxDB基本概念
1、数据格式
在 InfluxDB 中,我们可以粗略的将要存入的一条数据看作一个虚拟的 key 和其对应的 value(field value)。格式如下:
cpu_usage,host=server01,region=us-west value=0.64 1434055562000000000
虚拟的 key 包括以下几个部分: database, retentio...
~~~ 在上一章节influxDB概念详解1,解释了influxDB的一些基本概念,主要是tag,measurement,series等一些基本的概念。有些概念和我们常用的DBMS有点像。上一节介绍的概念大多数都是时序领域一些常用的概念,或者说大家公认的。在influxDB里面,还有很多自己特有的概念,大多数都是和influxDB存储和查询模型相关的。这一节主要是介绍这些概念。
InfluxDB相关概念
在influxDB中,有很多概念,例如DataBase,Measurement,point,Field等等。这些概念都是什么含义,本篇文章将会对常用的基本概念和操作做一个总结。
Database和Measurement
DataBase和Measurement都是对数据的一个归类,只不过粒度不同。这个举个例子就明白了,文件和文件夹的概念,DataBase是一个文件夹,里面存放放了很多文件,每个文件就可以理解为一个Measuremen。关于这个概念,如果了解其他关系型数据库例如MyS
influx查询包含了水平拆分、垂直拆分. 查询结果的每一条记录record,只对应一个field
写入一个point时包含多个field, 查询时如何将这几个field一起查出来呢?
point := influxdb2.NewPoint("history",
map[string]string{
"Version": DedefaultVersion,
"Name": sh.Name,
"Active": fmt.Sprin
网上关于influxdb数据库中tag和field迁移的文章比较少,虽然有,但是大部分都是有问题的,比如下面两种方式
1、select tag1,tag2,field1,field2,field3 into target from origin
2、select * into target from origin
这两种sql并没有将tag和field 区分开,而是将tag作为filed导入进target表(measurement)中。
根据官方文档显示:
Relocate data
一、时序数据库介绍:时序数据 时序数据与关系型数据差异二、安装influxdb以及基本操作、命令 三、influxdb studio可视化界面 四、influxdb常见问题 五、InfluxDb中的数学运算 数学运算符 InfluxDb中的函数 六、influxdb中的crud
七 springboot连接influxdb