首页 > 其他分享 >go使用 github.com/influxdata/influxdb/client/v2 写数据到 influxdb

go使用 github.com/influxdata/influxdb/client/v2 写数据到 influxdb

时间:2023-06-23 23:45:02浏览次数:39  
标签:github err influxdb v2 client InfluxDB 类型 数据

转载请注明出处:

接入示例

  使用 github.com/influxdata/influxdb/client/v2 依赖包向 InfluxDB 写入数据的示例代码:

package main

import (
    "fmt"
    "log"
    "time"

    "github.com/influxdata/influxdb/client/v2"
)

const (
    MyDB     = "mydb"
    username = ""
    password = ""
)

func main() {
    c, err := client.NewHTTPClient(client.HTTPConfig{
        Addr:     "http://localhost:8086",
        Username: username,
        Password: password,
    })
    if err != nil {
        log.Fatal(err)
    }
    defer c.Close()

    bp, err := client.NewBatchPoints(client.BatchPointsConfig{
        Database:  MyDB,
        Precision: "s", // 时间戳精度,例如:"s"表示秒,"ms"表示毫秒
    })
    if err != nil {
        log.Fatal(err)
    }

    tags := map[string]string{"tag1": "value1", "tag2": "value2"}
    fields := map[string]interface{}{
        "value": 10.4,
    }

    pt, err := client.NewPoint(
        "measurement_name",
        tags,
        fields,
        time.Now(),
    )
    if err != nil {
        log.Fatal(err)
    }
    
    bp.AddPoint(pt)

    err = c.Write(bp)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Data written to InfluxDB successfully!")
}

  

注意事项:

  1.为了提高写入性能,建议使用 client.NewBatchPoints 创建一个批量写入对象(BatchPoints)。将各个数据点添加到 BatchPoints 对象中,并使用 c.Write 方法一次性将整个批量写入发送给 InfluxDB。

  2.时间戳和精度:在创建数据点时,可以指定时间戳。确保时间戳是有效的,并且按照正确的时间戳格式提供。还要注意选择合适的时间戳精度,例如秒("s")或毫秒("ms"),以便与 InfluxDB 中定义的时间戳精度匹配。

  3.字段类型:根据你在 InfluxDB 数据库中定义的字段类型,确保传递给数据点的字段值类型是正确的。如果字段类型不匹配,可能会导致解析错误。

  4.标签和字段:在创建数据点时,可以指定标签(tags)和字段(fields)。标签用于标识和过滤数据,而字段包含真实的数据值。确保传递给数据点的标签和字段的名称和值是正确的。

  5.错误处理:在代码中进行适当的错误处理,例如检查函数返回的错误并采取相应的措施,比如日志记录或错误处理。

 

错误总结:

  在 开发过程中遇到 写数据到influxdb 报错:unable to parse points ,总结下自己的踩坑原因: 由于我在 封装 fields 时,使用的数据类型是 int 与 *big.Int,在写数据库时解析不了,抛出异常 unable to parse points。

  相关类型的保存与转换总结:

  1. 整数类型:InfluxDB 支持的整数类型是 int64。如果你的 Go 变量是 int 类型或其他整数类型(如 int8int16int32),则需要将其转换为 int64 类型。

  2. 浮点数类型:InfluxDB 支持的浮点数类型是 float64。如果你的 Go 变量是 float32 或其他浮点数类型,则需要将其转换为 float64 类型。

  3. 布尔类型:InfluxDB 支持布尔类型。如果你的 Go 变量是 bool 类型,则不需要进行任何转换。

  4. 字符串类型:InfluxDB 支持字符串类型。如果你的 Go 变量是 string 类型,则不需要进行任何转换。

  5. 大整数类型:如果你在处理大整数时使用了 big.Int 类型,你可能需要将其转换为适当的类型,以便与 InfluxDB 的字段类型匹配。例如,可以使用 int64 或字符串来表示大整数。

  确保根据 InfluxDB 数据库中定义的字段类型和数据模型来选择正确的类型,并根据需要进行必要的类型转换。这样可以避免在写入数据时出现类型不匹配的错误。

  同时,还应注意使用正确的时间戳精度(例如秒、毫秒等)和正确的时间格式,以便在写入数据时与 InfluxDB 数据库进行正确的交互。

    

 

标签:github,err,influxdb,v2,client,InfluxDB,类型,数据
From: https://www.cnblogs.com/zjdxr-up/p/17500507.html

相关文章

  • 如何使用 GitHub Copilot:提示、技巧和用例
    生成式人工智能编码工具正在改变开发人员处理日常编码任务的方式。从记录我们的代码库到生成单元测试,这些工具有助于加快我们的工作流程。然而,就像任何新兴技术一样,总是有一个学习曲线。因此,当人工智能驱动的编码助手无法生成他们想要的输出时,开发人员(无论是初学者还是经验丰富的......
  • 关于搭建github+hexo博客一些问题的解决
    最近通过github和hexo搭建博客时,遇到一些问题,这里写一篇博客记录一下他们的解决方法,顺便推荐几篇关于搭建博客的教程https://zhuanlan.zhihu.com/p/60578464https://firstfan119.github.io/2019/12/06/hexo-build-up/个人环境 Hexod报错hexod远程部署报错,报错信息如下:......
  • 宇宙最全面的C++面试题v2.0
    作为一个后端人,是无论如何要对C++有一定了解底。很多同学都对C++有一定的抵触情绪,因为C++知识点繁杂全面,深度与广度俱在,准备面试需要很长的时间。本篇的主要目的是梳理知识脉络,挑选最精华的面试题,以飨读者,事半功倍!准备面试一定要有侧重点,标为❤属于高频考点,需要反复记忆。建议平......
  • [转]火狐浏览器访问github提示:未连接:有潜在的安全问题...github.com 启用了被称为 HTT
    火狐浏览器访问github,提示:       未连接:有潜在的安全问题;       Firefox检测到潜在的安全威胁,并因github.com要求安全连接而没有继续。如果这种情况是因为使用DevSidecar而引起的,可以使用以下方式解决:在地址栏输入:about:config在搜索框输入:security.en......
  • ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+错误的处理
    1、原因这个问题是python版本安装的urllib3版本过高,而openssl版本太低导致的2、解决方法2.1、升级openssl版本#[email protected]#[email protected]#安装好后,查看openssl版本是否升级到最新python......
  • 赛灵思fpga+CMV2000 相机整套资料齐全,可生产,可科研。
    赛灵思fpga+CMV2000相机整套资料齐全,可生产,可科研。ID:524000607230332419......
  • Zabbix-客户端利用snmp v2 协议上线被监控
    Zabbix-客户端利用snmpv2协议上线被监控SNMP监控案例背景:在现网很多场景中,zabbix除了监控windows、linux服务器外,还会监控网络等设备,但这些设备上是无法安装agent2这个客户端插件,那我们改如何利用zabbix来监控呢。但网络设备都是支持SNMP协议的,因此我们可用利用SNMP简单......
  • fx3u和西门子v20/台达vfd-m/三菱E700 rtu所需硬件:FX3U PLC,FX3U-485BD通信板,变频器。
    fx3u和西门子v20/台达vfd-m/三菱E700rtu所需硬件:FX3UPLC,FX3U-485BD通信板,变频器。功能:使用fx3u-485bd板,rtu通信控制西门子v20/台达VFD-M/三菱E700三种变频器正反转,停止,频率设定,加减速,以及对频率,电压,电流的读取,有运行指示,效果可以看视频,反应及时,运行可靠,三种变频器程序是单个的......
  • PromSQL v2.29
    启动参数负偏移量:启动时增加--enable-feature=promql-negative-offset时间修饰符:@启动时增加--enable-feature=promql-at-modifier数据类型分类即时向量:Instant-vector范围向量:Range-vector标量:Scalar字符串(未启用)查询指标名//结果为即时向量,所有该指标的结果,......
  • v2和v3组件通信方式的区别
    https://gitee.com/jch1011/vue3_communication.git通信方式vue2props:父子组件、子父组件、甚至兄弟组件自定义事件:可以实现子父组件$bus:任意组件通信pubsub:发布订阅,任意组件通信vuex:集中式状态管理容器,实现任意组件通信ref:获取子组件的响应式数据及方法slot:插槽(默认、......