转载请注明出处:

接入示例

  使用 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 数据库进行正确的交互。

    

go使用 github.com/influxdata/influxdb/client/v2 写数据到 influxdb的更多相关文章

  1. nagios+influxdb+grafana的监控数据可视化流程

    nagios介绍 nagios是一款开源监控的应用,可用于监控本地和远程主机的日志.资源.死活等等诸多功能.通过snmp协议和nrpe协议. nagios的配置文件是由nconf上进行配置,然后点击生 ...

  2. 【helm & Tiller】报错Error: incompatible versions client[v2.14.1] server[v2.13.0] │

    helm是helm的客户端部分 tiller是helm的服务器端部分 报错 报错Error: incompatible versions client[v2.14.1] server[v2.13.0] ...

  3. 【时序数据库InfluxDB】Windows环境下配置InfluxDB+数据可视化,以及使用 C#进行简单操作的代码实例

    前言:如题.直接上手撸,附带各种截图,就不做介绍了. 1.influxDB的官网下载地址  https://portal.influxdata.com/downloads/ 打开以后,如下图所示,可以 ...

  4. SpringBoot 2.0 + InfluxDB+ Sentinel 实时监控数据存储

    前言 阿里巴巴提供的控制台只是用于演示 Sentinel 的基本能力和工作流程,并没有依赖生产环境中所必需的组件,比如持久化的后端数据库.可靠的配置中心等.目前 Sentinel 采用内存态的方式存储 ...

  5. 通过Python将监控数据由influxdb写入到MySQL

    一.项目背景 我们知道InfluxDB是最受欢迎的时序数据库(TSDB).InfluxDB具有 持续高并发写入.无更新:数据压缩存储:低查询延时 的特点.从下面这个权威的统计图中,就可以看出Influ ...

  6. 配置 influxDB 鉴权及 HTTP API 写数据的方法

    本文简要描述如何为 InfluxDB 开启鉴权和配置用户管理权限(安装后默认不需要登录),以及开启鉴权后如何使用 HTTP API 写数据. 创建 InfluxDB 管理员账号创建 admin 帐号密 ...

  7. Java使用UDP发送数据到InfluxDB

    最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分 ...

  8. influxdb 端口、数据结构、写数据

    InfluxDB 是一个开源,分布式,时间序列,事件,可度量和无外部依赖的数据库. InfluxDB有三大特性: Time Series (时间序列):你可以使用与时间有关的相关函数(如最大,最小,求 ...

  9. GitHub上YOLOv5开源代码的训练数据定义

    GitHub上YOLOv5开源代码的训练数据定义 代码地址:https://github.com/ultralytics/YOLOv5 训练数据定义地址:https://github.com/ultr ...

  10. 利用InfluxDB和Grafana搭建数据监测的仪表盘

    InfluxDB的介绍及安装 InfluxDB是支持持续写入的时序数据库,常用于监测系统所需要的数据的存储. 官网的详细安装步骤 https://docs.influxdata.com/influxd ...

随机推荐

  1. sqlite4操作

    目录 SQLite数据库(一):基本操作... 1 目录... 1 一.SQLite介绍... 2 1.    什么是SQLite. 2 2.    什么是数据库... 2 3.    数据库是如何存 ...

  2. JavaScript的引入方式

    外部JS文件 deno.js alert('你好!JavaScript'); JS引入方式.html <!--方式一:内部脚本--> <!--标签不能自闭和--> <sc ...

  3. Redis缓冲区溢出及解决方案

    缓冲区(buffer),是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区. 一.Redis缓冲区溢出影响 在Redis ...

  4. 【Zookeeper】(一)概述与内部原理

    Zookeeper概述 1 概述 Zookeeper是一个开源的.分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式的角度来看,是一个基于观察者模式设计的分布式服务管 ...

  5. MIT6.824 Distributed-System(Lab1)-MapReduce

    Lab address: http://nil.csail.mit.edu/6.824/2020/labs/lab-mr.html paper: MapReduce: Simplified Data ...

  6. vue下载附件按钮功能

    一.tools文件夹下tools文件中封装下载方法: const iframeId = 'download_file_iframe' function iframeEle (src) { let el ...

  7. Spring AOP 分享

    初级篇 AOP是什么? Aspect-oriented Programming (AOP) 即面向切面编程.简单来说,AOP 是一种编程范式,允许我们模块化地定义横跨多个对象的行为.AOP 可以帮助我 ...

  8. [ARC114D] Moving Pieces on Line 解题报告

    AT题面 简要题意 有一个红色的数轴,相邻两个整点之间连有一条边,所有边初始为红色.数轴上有 \(n\) 个棋子,将一个棋子从 \(a\) 位置移到 \(b\) 位置,可以将 \((a,b)\) 之间 ...

  9. 【Java】Eclipse常用快捷键整理

    前言 还是最近在上Java课,由于疫情原因,看的网课,那里的老师比较实战派,很多时候不知道按了什么快捷键就立马出现了很骚的操作.网上查询后发现了一些快捷键对于我这个eclipse小白还是挺常用的,整理 ...

  10. PHP代码审计——ThinkPHP基础

    一.ThinkPHP概述 1. ThinPHP是一个轻量级的PHP框架,旨在提供快速开发Web应用程序的工具和资源.它采用了MVC(Model-View-Controller)架构,使开发人员可以更好 ...