2016-11-29 5 views
2

influxdbのようなCSVファイルを回線プロトコル形式で表示するにはどうすればよいですか?csvファイルをラインプロトコル形式で表示する方法は?

measurement[,tag_key1=tag_value1...] 
field_key=field_value[,field_key2=field_value2] [timestamp] 

次のように私のcsvファイルがあるとします

Date   Time   place  status  action 
2 sep 2016 12:05:50:274  abc   on   batery on 
16 sep 2016 12:05:51:275  mbc   on   batery on 
22 sep 2016 12:05:52:276  kabc   on  batery on 

私は、コードを使用してラインで全体のCSVファイルの行を読み取ることができています:

**with open('test.csv') as fp: 
     for line in fp: 
     print line** 

と私よo/pを取得する:

['Date','Time','place','status','action'] 
['2 sep 2016','12:05:50:274','abc','on','batery on']['16 sep 2016','12:05:51:275','mbc',  'on','batery on']['22 sep 2016','12:05:52:276','kabc','on','batery on'] 

Wheそれがためにラインプロトコルにタイムスタンプとして使用することができるようにエポックタイムに

Date=2 sep 2016,place=abc,'status=on,action=battery on,Time=12:05:50:274 

そしてまた、私は、コードを変換できるようにしたい、Time=12:05:50:274:私はアウトのようなlineprotocol形式/構文でに入れたいREAS influx db

答えて

2

エポック時間に変換するには、行の「日付」属性も使用する必要があります。あなたができる方法の1つがあります:

from __future__ import print_function 

import csv 
from datetime import datetime as dt 

with open('test.csv') as infile: 
    headers = next(csv.reader(infile)) 

with open('test.csv') as infile: 
    for row in csv.DictReader(infile): 
     row['Time'] = dt.strptime(row['Date'] + " " + row['Time'].rsplit(":",1)[0], "%d %b %Y %H:%M:%S") 
     print(','.join(["%s=%s" %(header, row[header]) for header in headers]) 
+0

ありがとうございました。 – Allenien3256

関連する問題