• influxdb[2]-读写数据


    InfluxDB提供多种数据写入方式,包括命令行、客户端、插件等。Cli写入数据已在上文中描述,本文主要介绍使用HTTP接口读写数据。

    使用HTTP接口创建数据库

    接口地址:/query

    POST,参数qCREATE DATABASE <new_database_name>,示例:

    curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb1"
    
    HTTP/1.1 200 OK
    Content-Type: application/json
    Request-Id: 658c7410-ea97-11eb-8030-525400d9065e
    X-Influxdb-Build: OSS
    X-Influxdb-Version: 1.8.6
    X-Request-Id: 658c7410-ea97-11eb-8030-525400d9065e
    Date: Thu, 22 Jul 2021 02:49:12 GMT
    Transfer-Encoding: chunked
    
    {"results":[{"statement_id":0}]}
    
    

    写单条数据

    接口地址:/write,具体格式如下:

    curl -i -XPOST 'http://localhost:8086/write?db=mydb1' --data-binary 'cpu,host=server01,region=us-west value=0.69 1626858254189591692'
    
    HTTP/1.1 204 No Content
    Content-Type: application/json
    Request-Id: f606e8f7-ea97-11eb-8031-525400d9065e
    X-Influxdb-Build: OSS
    X-Influxdb-Version: 1.8.6
    X-Request-Id: f606e8f7-ea97-11eb-8031-525400d9065e
    Date: Thu, 22 Jul 2021 02:53:15 GMT
    
    

    HTTP 204 No Content`,说明写入成功。

    批量写入

    curl -i -XPOST 'http://localhost:8086/write?db=mydb1' --data-binary 'cpu,host=server02 value=0.67
    cpu,host=server02,region=us-west value=0.55 1626858254189591692
    cpu,host=server03,region=us-west value=2.0 1626858254189591692'
    
    HTTP/1.1 204 No Content
    Content-Type: application/json
    Request-Id: e9c4ad08-ea98-11eb-8032-525400d9065e
    X-Influxdb-Build: OSS
    X-Influxdb-Version: 1.8.6
    X-Request-Id: e9c4ad08-ea98-11eb-8032-525400d9065e
    Date: Thu, 22 Jul 2021 03:00:04 GMT
    

    批量写入文件

    curl -i -XPOST 'http://localhost:8086/write?db=mydb1' --data-binary @cpu_data.txt
    

    给一个正确的文件(cpu_data.txt)的例子,数据的格式需要满足InfluxDB行格式:

    cpu,host=server02 value=0.67
    cpu,host=server02,region=us-west value=0.55 1626858254189591692
    cpu,direction=in,host=server01,region=us-west value=2.0 1626858254189591692
    

    查询数据

    接口地址:/query

    curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb1" --data-urlencode "q=SELECT * FROM "cpu" WHERE "region"='us-west'"
    
    {
        "results": [
            {
                "statement_id": 0,
                "series": [
                    {
                        "name": "cpu",
                        "columns": [
                            "time",
                            "host",
                            "region",
                            "value"
                        ],
                        "values": [
                            [
                                "2021-07-21T09:04:14.189591692Z",
                                "server02",
                                "us-west",
                                0.55
                            ],
                            [
                                "2021-07-21T09:04:14.189591692Z",
                                "server03",
                                "us-west",
                                2
                            ],
                            [
                                "2021-07-22T02:53:15.355312874Z",
                                "server01",
                                "us-west",
                                0.69
                            ]
                        ]
                    }
                ]
            }
        ]
    }
    
    

    多个数据

    接口地址:/query

    在一次API调用中发送多个InfluxDB的查询语句,可以简单地使用分号分隔每个查询

    curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb1" --data-urlencode "q=SELECT "value" FROM "cpu" WHERE "region"='us-west';SELECT count("value") FROM "cpu" WHERE "region"='us-west'"
    

    其它参数

    时间戳格式

    在InfluxDB中的所有数据都是存的UTC时间,时间戳默认返回RFC3339格式的纳米级的UTC时间,例如2021-07-22T02:53:15.355312874Z,如果你想要返回Unix格式的时间,可以在请求参数里设置epoch参数,其中epoch可以是[h,m,s,ms,u,ns]之一。例如返回一个秒级的epoch:

    curl -G 'http://localhost:8086/query?pretty=true'  --data-urlencode "epoch=s" --data-urlencode "db=mydb1" --data-urlencode "q=SELECT * FROM "cpu" WHERE "region"='us-west'"
    
    {
        "results": [
            {
                "statement_id": 0,
                "series": [
                    {
                        "name": "cpu",
                        "columns": [
                            "time",
                            "host",
                            "region",
                            "value"
                        ],
                        "values": [
                            [
                                1626858254,
                                "server02",
                                "us-west",
                                0.55
                            ],
                            [
                                1626858254,
                                "server03",
                                "us-west",
                                2
                            ],
                            [
                                1626922395,
                                "server01",
                                "us-west",
                                0.69
                            ]
                        ]
                    }
                ]
            }
        ]
    }
    
    

    最大行限制

    分块(chunking)

    HTTP返回值概要

    • 2xx:如果写数据后收到HTTP 204 No Content,说明写入成功
    • 4xx:表示InfluxDB不知道你发的是什么。
    • 5xx:系统过载或是应用受损。
  • 相关阅读:
    Pyhon基础过滤字符串中的字母数字特殊符号
    [编程题] 斐波那契数列
    左旋转字符串(Java)-循环Index方式
    [编程题]字符流中第一个不重复的字符
    6525. 【2020.4.1模拟】Valleys
    6515. 【GDOI2020模拟03.28】数一数(one)
    6516. 【GDOI2020模拟03.28】数二数(two)
    6508. 【GDOI2020模拟03.11】我的朋友们
    6494. 【GDOI2020模拟03.08】勘探
    6491. 【GDOI2020模拟03.04】铺路
  • 原文地址:https://www.cnblogs.com/iiot/p/15048057.html
Copyright © 2020-2023  润新知