grafanaとmariadbの組合せにcsvデータをinsertしました
1.概要
csvをmariadbにimportするload dataを試して、ハマったので、その内容を記述します。insert処理をcsvからload dataを利用してimportしてみました。結果的に作成したcsvの形式が悪く、timestampフィールドがゼロになる問題が発生して、悩みました。
2.詳細
insert data部分を変更します。
(a) insertのsqlからcsvを作成( copy_data.csv )
'1001','2023-10-01 00:00:00',1000
'1001','2023-10-01 01:00:00',1010
'1001','2023-10-01 02:00:00',1020
'1001','2023-10-01 03:00:00',1030
'1001','2023-10-01 04:00:00',1040
'1001','2023-10-01 05:00:00',1050
'1001','2023-10-01 06:00:00',1060
'1001','2023-10-01 07:00:00',1070
'1001','2023-10-01 08:00:00',1080
'1001','2023-10-01 09:00:00',1090
'1001','2023-10-01 10:00:00',1100
'1001','2023-10-01 11:00:00',1110
'1001','2023-10-01 12:00:00',1120
'1002','2023-10-01 00:00:00',1120
'1002','2023-10-01 01:00:00',1110
'1002','2023-10-01 02:00:00',1100
'1002','2023-10-01 03:00:00',1090
'1002','2023-10-01 04:00:00',1080
'1002','2023-10-01 05:00:00',1070
'1002','2023-10-01 06:00:00',1060
'1002','2023-10-01 07:00:00',1050
'1002','2023-10-01 08:00:00',1040
'1002','2023-10-01 09:00:00',1030
'1002','2023-10-01 10:00:00',1020
'1002','2023-10-01 11:00:00',1010
'1002','2023-10-01 12:00:00',1000
結果的には、このcsvが誤りでしたが、説明を続けます。
(b) dockerコンテナ内にCopy
docker ps でmariadbコンテナのIDを調べます。ここでは、1234567890abとします。
docker cp copy_data.csv 1234567890ab:/home/username/copy_data.csv
(c) load data
load data local infile 'copy_data.csv'
into table sample_table
fields terminated by ','
enclosed by "'";
実行するとtimestampがゼロとなり、エラーです。
Query OK, 2 rows affected, 50 warnings (0.013 sec)
Records: 26 Deleted: 0 Skipped: 24 Warnings: 50
MariaDB> select * from sample_table;
+------+---------------------+------------+
| id | data_time | data_value |
+------+---------------------+------------+
| 1001 | 0000-00-00 00:00:00 | 1000 |
| 1002 | 0000-00-00 00:00:00 | 1120 |
+------+---------------------+------------+
2 rows in set (0.000 sec)
ここで原因がわからずに悩みました。
(d) csvを修正( copy_data.csv )
csvはカンマ区切りで分かれているので、シングルクォートを削除しました。
1001,2023-10-01 00:00:00,1000
1001,2023-10-01 01:00:00,1010
1001,2023-10-01 02:00:00,1020
1001,2023-10-01 03:00:00,1030
1001,2023-10-01 04:00:00,1040
1001,2023-10-01 05:00:00,1050
1001,2023-10-01 06:00:00,1060
1001,2023-10-01 07:00:00,1070
1001,2023-10-01 08:00:00,1080
1001,2023-10-01 09:00:00,1090
1001,2023-10-01 10:00:00,1100
1001,2023-10-01 11:00:00,1110
1001,2023-10-01 12:00:00,1120
1002,2023-10-01 00:00:00,1120
1002,2023-10-01 01:00:00,1110
1002,2023-10-01 02:00:00,1100
1002,2023-10-01 03:00:00,1090
1002,2023-10-01 04:00:00,1080
1002,2023-10-01 05:00:00,1070
1002,2023-10-01 06:00:00,1060
1002,2023-10-01 07:00:00,1050
1002,2023-10-01 08:00:00,1040
1002,2023-10-01 09:00:00,1030
1002,2023-10-01 10:00:00,1020
1002,2023-10-01 11:00:00,1010
1002,2023-10-01 12:00:00,1000
再度、docker cpでコンテナにコピー
(e) load data
load data local infile 'copy_data.csv'
into table sample_table
fields terminated by ',';
Query OK, 26 rows affected (0.017 sec)
Records: 26 Deleted: 0 Skipped: 0 Warnings: 0
enclosed by "'"も削除して、問題解決です。
MariaDB > select * from sample_table;
+------+---------------------+------------+
| id | data_time | data_value |
+------+---------------------+------------+
| 1001 | 2023-10-01 00:00:00 | 1000 |
| 1001 | 2023-10-01 01:00:00 | 1010 |
| 1001 | 2023-10-01 02:00:00 | 1020 |
| 1001 | 2023-10-01 03:00:00 | 1030 |
| 1001 | 2023-10-01 04:00:00 | 1040 |
| 1001 | 2023-10-01 05:00:00 | 1050 |
| 1001 | 2023-10-01 06:00:00 | 1060 |
| 1001 | 2023-10-01 07:00:00 | 1070 |
| 1001 | 2023-10-01 08:00:00 | 1080 |
| 1001 | 2023-10-01 09:00:00 | 1090 |
| 1001 | 2023-10-01 10:00:00 | 1100 |
| 1001 | 2023-10-01 11:00:00 | 1110 |
| 1001 | 2023-10-01 12:00:00 | 1120 |
| 1002 | 2023-10-01 00:00:00 | 1120 |
| 1002 | 2023-10-01 01:00:00 | 1110 |
| 1002 | 2023-10-01 02:00:00 | 1100 |
| 1002 | 2023-10-01 03:00:00 | 1090 |
| 1002 | 2023-10-01 04:00:00 | 1080 |
| 1002 | 2023-10-01 05:00:00 | 1070 |
| 1002 | 2023-10-01 06:00:00 | 1060 |
| 1002 | 2023-10-01 07:00:00 | 1050 |
| 1002 | 2023-10-01 08:00:00 | 1040 |
| 1002 | 2023-10-01 09:00:00 | 1030 |
| 1002 | 2023-10-01 10:00:00 | 1020 |
| 1002 | 2023-10-01 11:00:00 | 1010 |
| 1002 | 2023-10-01 12:00:00 | 1000 |
+------+---------------------+------------+
26 rows in set (0.001 sec)
参考
[外部サイト参照]
・【MySQL】csvファイルをDBにインポートする方法
コメント
コメントを投稿