【发布时间】:2017-08-28 09:47:46
【问题描述】:
是否可以将 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
如果我使用类似“测量”:“你的测量”。然后我得到了这个错误。 .......
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(',').... 而且我也忽略了第一行。但我得到了这个值错误
【问题讨论】: