InfluxDB查询 tag和field列名字重复

InfluxDB 插入数据时修改了表结构

一、最开始是想往InfluxDB数据库里批量添加一些数据。

表结构为:
在这里插入图片描述
name是名字,unit是类型,value是值。
其中nameunittagvaluefield

使用代码批量添加的数据,代码如下:
在这里插入图片描述
我这里是读取了一个本地csv文件,文件里有20多条数据。

二、代码错误 批量插入的后果
通过代码可以看出unit字段应该是写成tag的,由于代码错误,插入数据库后,数据库内容变成了:
在这里插入图片描述

多出来了一列unit_1

查看数据库结构:
tagKey
在这里插入图片描述
fieldKey
在这里插入图片描述
悲惨的发现数据库结构发生了变化,现在查询出来的结果中unitfield列,unit_1tag列。
在使用查询语句的时候,也会受到一些影响。有兴趣的可以试一下。

那我现在想要查询出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语句就清楚了。

四、需谨慎
还是多核对几遍,或者找个地方测试一下,比较好。

欢迎指正!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值