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模板,模板格式如下:

influxdb2 删除记录 influxdb数据导出到文件_数据库


将此文件导入的命令是:

influxdb2 删除记录 influxdb数据导出到文件_python_02


如果成功,会显示导入成功:

influxdb2 删除记录 influxdb数据导出到文件_influxdb2 删除记录_03


显示以上这样的信息代表导入成功

我们的csv文件格式

influxdb2 删除记录 influxdb数据导出到文件_数据库_04

用excel打开如上显示,而用txt打开每一个属性都用逗号隔开

时间戳表示

influxdb2 删除记录 influxdb数据导出到文件_influxdb2 删除记录_05


根据官网给的导入数据模板的如上数据中,

treasure代表measurement

captain_id是tag

value是field

(tag与tag之间、field与field之间用逗号分开,tag、field之间用空格分开)

简单的pathon代码将csv再转换成txt

influxdb2 删除记录 influxdb数据导出到文件_python_06


在这个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格式如下:

influxdb2 删除记录 influxdb数据导出到文件_python_07

**重要!**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等。

导入成功