influxdb csv数据直接导入教程(只需要简单pathon代码将csv转换成txt)
- csv文件转换为txt文件
- 官网模板
- 我们的csv文件格式
- 时间戳表示
- 简单的pathon代码将csv再转换成txt
- **重要!**windows的txt转换为unix的txt
- 导入
- 导入成功
csv文件转换为txt文件
官网模板
https://docs.influxdata.com/influxdb/v1.7/tools/shell/#import-data-from-a-file-with-import.
首先,官网有导入influxdb的txt模板,模板格式如下:
将此文件导入的命令是:
如果成功,会显示导入成功:
显示以上这样的信息代表导入成功
我们的csv文件格式
用excel打开如上显示,而用txt打开每一个属性都用逗号隔开
时间戳表示
根据官网给的导入数据模板的如上数据中,
treasure代表measurement
captain_id是tag
value是field
(tag与tag之间、field与field之间用逗号分开,tag、field之间用空格分开)
简单的pathon代码将csv再转换成txt
在这个csv文件中,文件名为c1.csv
想创建的数据库名字为device_database
自己起个measurement名字:control,即measurement=control;
是从工具c1得到的数据,所以tag名为device,即device=c1;
七列属性(field)分别是NX、NY、NZ、gX、gY、gZ、V
将此csv转为txt的pathon代码:
import time
import os
import csv
t = time.time() #设当前时间为时间戳起点10位时间戳,第10位是秒
t = t*1000000000 #想要导入ns,所以为19位时间,可根据自己的采样时间设立或者自带时间戳就不需要
ts_temp=int(t) #这样时间戳才不是科学计数法
with open('c1.txt', 'w') as f1: #创建一个需要写入的txt文件
f1.write('# DDL\n')
f1.write('\nCREATE DATABASE device_database') #创建数据库,若数据库已有则不需这段代码
f1.write('\n# DML')
f1.write('\n# CONTEXT-DATABASE: device_database') #上面四行都是模板所需声明
for i in range(1,2):
s = str(i)
with open('c1.csv') as csvfile:
readcsv = csv.reader(csvfile)
for row in readcsv:
f1.write('\ncontrol') #measure写入
f1.write(',device=c1') #tag写入
f1.write(' NX=' + row[0])
f1.write(',NY=' + row[1])
f1.write(',NZ=' + row[2])
f1.write(',gX=' + row[3])
f1.write(',gY=' + row[4])
f1.write(',gZ=' + row[5])
f1.write(',V=' + row[6]) #fields写入
ts_temp = ts_temp + 20000 #0.00002s=20000ns
ts = str(ts_temp)
f1.write(' ' + ts) #时间戳写入
f1.write('\n') #最后一行数据后需要回车,否则最后一条无法导入
f1.close()
得到的txt格式如下:
**重要!**windows的txt转换为unix的txt
从windows得到的txt回车转到unix系统回车其实是/n/r,而unix只是/n,所以导入时会失败。
所以需要下载dos2unix程序
yum -y install dos2unix
将c1.txt的windows格式转换为unix格式:
dos2unix c1.txt
导入
按照模板就可以导入啦
influx -host ‘localhost’ -port ‘18086’ -user ‘user’ -password ‘password’ -import -path=c1.txt -precision=ns
port端口、user账号、password密码命令根据自己配置文件以及最初设置修改或者删除。
如果是已创建了数据库则将数据库名字也加在上面的命令后面:
-database=control_database
precision根据自己的时间戳选择是s,ms还是ns等。
导入成功