PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (4)

PLCからゲートウェイでデータを取得し、データベースにJSONで保存します。複数回に分けて、サンプルを用いて解説します。
初回から前回にかけては、ゲートウェイを使って、PLCから取得したデータをMQTTでブローカーに送信するまでを実装しました。

[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (1)](https://qiita.com/COOLMAGICPRODU1/items/31513295943763365915)
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (2)](https://qiita.com/COOLMAGICPRODU1/items/370b1bd37dca8a4fd9ae)
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (3)](https://qiita.com/COOLMAGICPRODU1/items/08891c828736428c1b5c)

今回はデータベースを準備します。
![348f9673721149a9206023ad2b3ca8e062d7eb7ab1449.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/a006fffe-f0d3-97eb-47de-c090c0e21289.png)
## データベース
このサンプルではMySQLを使用します。MySQLでなければいけない理由はまったくありません。MySQLを選択した理由は、そこ（私の開発環境、作業場ですね）で動いていたからです。
テーマを「JSONで保存」とした以上は、JSON型をサポートしているDBMSである必要はあるのですが、MySQL以外にもJSON型をサポートしているDBMSはあります。

ユーザとデータベースは事前に作成されていたものを使います。これらの作成については解説はいたしません。

MySQLにおける、データベースとユーザの作成については、こちらを参照ください。
[データベースの作成](https://www.dbonline.jp/mysql/database/)
[ユーザーの作成](https://www.dbonline.jp/mysql/user/)
## テーブルを作成する
任意のユーザとデータベースでテーブルを作成します。
```
hoge@localhost C:\Users\hoge>mysql -u hoge -p
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.29 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use hoge
Database changed
mysql> 
```
データを保存するためのテーブルをひとつだけ作成します。
```
mysql> create table from_plc (
    -> body json,
    -> time_insert timestamp default current_timestamp
    -> );
Query OK, 0 rows affected (0.17 sec)

mysql> show full columns from from_plc;
+-------------+-----------+-----------+------+-----+-------------------+-------------------+---------------------------------+---------+
| Field       | Type      | Collation | Null | Key | Default           | Extra             | Privileges                      | Comment |
+-------------+-----------+-----------+------+-----+-------------------+-------------------+---------------------------------+---------+
| body        | json      | NULL      | YES  |     | NULL              |                   | select,insert,update,references |         |
| time_insert | timestamp | NULL      | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED | select,insert,update,references |         |
+-------------+-----------+-----------+------+-----+-------------------+-------------------+---------------------------------+---------+
2 rows in set (0.07 sec)

mysql>

```
## 次回
続きは次回とさせていただきます。
MySQLのセットアップを行われた方がいるとすれば、その方にとっては、この記事の中で最も時間を要した回であったはずです。そういった方に配慮し、今回は短めとし続きは次回とさせていただきます。
私の記事は先を急ぎませんので。
次回は、いよいよデータをデータベースに書き込みます。

[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (1)](https://qiita.com/COOLMAGICPRODU1/items/31513295943763365915)
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (2)](https://qiita.com/COOLMAGICPRODU1/items/370b1bd37dca8a4fd9ae)
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (3)](https://qiita.com/COOLMAGICPRODU1/items/08891c828736428c1b5c)
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (5)](https://qiita.com/COOLMAGICPRODU1/items/92724b0908143275cfac)
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (6)](https://qiita.com/COOLMAGICPRODU1/items/5afd3a846791046ef128)