ESP32: Influxdb にCSV形式ファイルをインポート

Arduino開発

はじめに

センサの計測結果を,マイコンの内蔵メモリやSDカードなどにCSV形式で取得することがあります。ここでは,CSV形式ファイルをinfluxのデータベースに登録する方法を示します。influxにデータを蓄積することで,Grafanaと連動させてデータの管理とグラフ化が簡単にできます。

準備

PythonのExportCsvToInfluxを用います。

・サイト:https://pypi.org/project/ExportCsvToInflux/

$ pip install ExportCsvToInflux

CSVファイル

登録するCSVファイルは,カンマ区切りです。

例:test.csv

time,elapse,pitch,roll,yaw,xGyro,yGyro,zGyro,xAccl,yAccl,zAccl
2020/08/07 17:07:09,0,0.36,-4.29,180.00,-0.12,0.19,0.07,-0.05,-0.75,10.17

influx データベース

influxデータベースを作成します。データベース名は,testです。

$ influx
create database test

CSV->influxdb変換コマンド

export_csv_to_influx コマンド(一行)で登録できます。

influxのデータベースtestにtest.csvのデータを登録します。

influxの時刻のデフォルトはUNIX時間(ナノ秒)です。ここでは,コマンド引数に,タイムゾーン(日本JST: Asia/Tokyo),CSVファイル内の日時カラム(time)と日時形式(%Y/%m/%d %H:%M:%S)を,それぞれ指定しています。influxの日時のデフォルトは,カラム timestamp, タイムゾーンUTC,形式%Y-%m-%d %H:%M:%Sです。

ユーザ名,パスワード,IPアドレス:ポート番号は,環境に合わせて入力してください。

$ export_csv_to_influx \
--csv test.csv \
--dbname test \
--measurement test \
--field_columns elapse,pitch,roll,yaw,xGyro,yGyro,zGyro,xAccl,yAccl,zAccl \
--time_zone 'Asia/Tokyo' \
--time_column time \
--time_format '%Y/%m/%d %H:%M:%S' \
--user <user name> \
--password <password> \
--force_insert_even_csv_no_update True \
--server <IP address>:<Port>

結果

センサの計測結果を記録したCSVファイルが,influxデータベースに日付入りで登録できました。表示されるtimeは,慣れないですがUNIX時間です。influx –precision rfc3339で,通常の日時が表示されます。

$ influx
> use test
Using database test
> select * from test
name: test
time elapse pitch roll xAccl xGyro yAccl yGyro yaw zAccl zGyro
---- ------ ----- ---- ----- ----- ----- ----- --- ----- -----
1596787629000000000 0 0.36 -4.29 -0.05 -0.12 -0.75 0.19 180 10.17 0.07

参考

コマンドのオプション一覧

export_csv_to_influx -h
-c, --csv: Input CSV file path, or the folder path. Mandatory 
-db, --dbname: InfluxDB Database name. Mandatory 
-m, --measurement: Measurement name. Mandatory 
-fc, --field_columns: List of csv columns to use as fields, separated by comma. Mandatory 
-d, --delimiter: CSV delimiter. Default: ','. 
-lt, --lineterminator: CSV lineterminator. Default: '\n'. 
-s, --server: InfluxDB Server address. Default: localhost:8086. 
-u, --user: InfluxDB User name. Default: admin 
-p, --password: InfluxDB Password. Default: admin 
-t, --time_column: Timestamp column name. Default column name: timestamp. If no timestamp column, the timestamp is set to the last file modify time for whole csv rows.Note: Also support the pure timestamp, like: 1517587275. Auto detected 
-tf, --time_format: Timestamp format. Default: '%Y-%m-%d %H:%M:%S' e.g.: 1970-01-01 00:00:00. 
-tz, --time_zone: Timezone of supplied data. Default: UTC. 
-tc, --tag_columns: List of csv columns to use as tags, separated by comma. Default: None 
-b, --batch_size: Batch size when inserting data to influx. Default: 500. 
-lslc, --limit_string_length_columns: Limit string length column, separated by comma. Default: None. 
-ls, --limit_length: Limit length. Default: 20. 
-dd, --drop_database: Drop database before inserting data. Default: False. 
-dm, --drop_measurement: Drop measurement before inserting data. Default: False. 
-mc, --match_columns: Match the data you want to get for certain columns, separated by comma. Match Rule: All matches, then match. Default: None. 
-mbs, --match_by_string: Match by string, separated by comma. Default: None. 
-mbr, --match_by_regex: Match by regex, separated by comma. Default: None. 
-fic, --filter_columns: Filter the data you want to filter for certain columns, separated by comma. Filter Rule: Any one filter success, the filter. Default: None. 
-fibs, --filter_by_string: Filter by string, separated by comma. Default: None. 
-fibr, --filter_by_regex: Filter by regex, separated by comma. Default: None. 
-ecm, --enable_count_measurement: Enable count measurement. Default: False. 
-fi, --force_insert_even_csv_no_update: Force insert data to influx, even csv no update. Default: False. 
-fsc, --force_string_columns: Force columns as string type, seperated as comma. Default: None 
-fintc, --force_int_columns: Force columns as int type, seperated as comma. Default: None 
-ffc, --force_float_columns: Force columns as float type, seperated as comma. Default: None

 

 

コメント

タイトルとURLをコピーしました