gpt4 book ai didi

python - 将 csv 文件数据导入 influxdb

转载 作者:行者123 更新时间:2023-11-28 22:29:15 31 4
gpt4 key购买 nike

是否可以将 csv 文件数据推送到 influxdb 中。例如,我有一个传感器设备,每分钟都会将数据更新为 csv 文件。我需要对其进行一些操作。我需要将 csv 文件数据推送到 influxdb,为此我正在编写一个 python 脚本。我试图找到一些例子,但没有成功找到任何例子。在我的 python 脚本下面,只有读取 csv 文件的代码很简单,但没有代码如何将这个 csv 传递给 influx db。我正在尝试的 csv 文件和代码如下所示。

DATE,value
2017-03-23 11:50:38,16
2017-03-23 11:50:44,83
2017-03-23 11:50:50,16
2017-03-23 11:50:56,70
2017-03-23 11:51:02,96

代码是

import datetime
import random
import time
import os
import csv
from csv import reader
import argparse
from influxdb import client as influxdb


db = influxdb.InfluxDBClient(host, 8086, rob, xxxx, sensors_data)


def read_data(filename):
with open(filename) as f:
reader = f.readlines()[1:]
for line in reader:
print line


if __name__ == '__main__':
filename = '/home/rob/myfile.csv'
a = read_data(filename)

我找到了这个链接,但它不同,不符合我的要求。 http://coendegroot.com/grafana-influxdb-and-python-simple-sample/我可以读取这个 csv 文件,现在我需要将 csv 文件数据发送到 influx db。但我不知道如何处理 python 脚本。我试图找到例子但没有成功。如果有人指导我,我将非常感激。非常感谢

我根据 Pigueiras 的建议更改了代码,它看起来像这样

import datetime
import random
import time
import os
import csv
from csv import reader
import argparse
from influxdb import client as influxdb


db = influxdb.InfluxDBClient(host, 8086, rob, xxxx, sensors_data)
def read_data():
with open('file.csv') as f:
return [x.split(',') for x in f.readlines()[1:]]

a = read_data()

for metric in a:
influx_metric = [{
'measurement': 'your_measurement',
'time': a[0],
'fields': {
'value': a[1]
}
}]
db.write_points(influx_metric)

我试过这段代码,它给了我以下错误

 'NameError: name 'your_measurement' is not defined

如果我使用 like like 'measurement': 'your_measurement'。然后我得到了这个错误。 …………

    File "all_flux.py", line 37, in <module>
db.write_points(influx_metric)
File "/usr/local/lib/python2.7/dist-packages/influxdb/client.py", line 411, in write_points
tags=tags, protocol=protocol)
File "/usr/local/lib/python2.7/dist-packages/influxdb/client.py", line 461, in _write_points
protocol=protocol
File "/usr/local/lib/python2.7/dist-packages/influxdb/client.py", line 282, in write
data = make_lines(data, precision).encode('utf-8')
File "/usr/local/lib/python2.7/dist-packages/influxdb/line_protocol.py", line 154, in make_lines
_convert_timestamp(point['time'], precision)
File "/usr/local/lib/python2.7/dist-packages/influxdb/line_protocol.py", line 40, in _convert_timestamp
raise ValueError(timestamp)
ValueError: ['2017-03-23 11:50:38', '16\r\n']

DATE 字段或列看起来像这样 '2017-03-23 11:50:38'所以我使用 return [x.split(',')....而且我也忽略了第一行。但是我得到了这个值错误

最佳答案

您只需要构建一个 JSON 主体,将您从 CSV 中读取的数据插入到 Influx 中。小心 read_data 函数,它不返回任何内容。

像这样的东西应该可以正常工作(当然,它可以被优化为一次插入多个点):

def read_data():
with open('file.csv') as f:
return [x.split(',') for x in f.readlines()[1:]]

a = read_data()

for metric in a:
influx_metric = [{
'measurement': 'your_measurement',
'time': metric[0],
'fields': {
'value': metric[1]
}
}]
db.write_points(influx_metric)

关于python - 将 csv 文件数据导入 influxdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43186129/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com