是否可以将csv文件数据推送到influxdb中。例如我有一个传感器设备,每分钟更新数据到csv文件。我需要对它做一些操作。 我需要将csv文件数据推送到influxdb,为此我正在编写一个python脚本。 我试图找到一些例子,但无法找到任何成功。在我的python脚本下面只能读取csv文件代码,这很简单,但没有代码如何将这个csv传递到influx数据库。我正在尝试的csv文件和代码看起来像这样。将csv文件数据导入influxdb
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文件数据流入数据库。但我不知道如何处理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
,如果我使用像像'测量':'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年3月23日十一时50分38秒' 所以我用回[x.split( '').. .. 也我忽略第一行。但我得到了这个值的错误
感谢名单了很多。我会试一试,很快就会回来。 – rob
我试过你的代码,它给了我下面的错误''NameError:名字'your_measurement'没有定义 ,如果我使用像'测量':'your_measurement'。然后我得到这个错误。 .......''文件'/usr/local/lib/python2.7/dist-packages/influxdb/line_protocol.py“,第40行,在_convert_timestamp raise ValueError(timestamp) ValueError:['DATE,值'] ' – rob
我会更新我的问题与您的代码和以下错误。可能看起来很乱。非常感谢 – rob