はじめに
センサの計測結果を,マイコンの内蔵メモリや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
コメント