2024年6月20日木曜日

データベースへcsvでデータをインポートする

 今回はcsvで正規化されたデータをデータベースにインポートしていきます。これは、

データベースの正規化(エクセルでの処理) (https://smizunolab.blogspot.com/2024/06/blog-post_18.html)

の続きです。利用するcsvファイルは、csv にも掲載してあります。この5個のファイルを利用してやっていきます。

(1) テーブルの作成

今回のテーブル構成は、メインテーブル(corporation)1個と外部テーブル(classification, agreement, content, conclusion)の4つです。以下のようにルールを決めます

・全てのテーブルは「id」を持ち、int not null, auto_increment, primary key とする 

・メインテーブルでの外部キー:「外部テーブル名_id」

・外部テーブルの構成:「id」、「name」は必須、このidはメインテーブルへの参照とする

このルールでテーブルを作成すると、以下のSQL文になります。

これを用いて、データベースを作成します。今回のデータベースは「disaster」とします。

(2) データベースの用意

データベースはAWS RDSを利用します。下記を参考に、データベースに接続してください。

AWS RDSでデータベースを作成しCloudShellから接続してSQL文からデータを格納する(https://smizunolab.blogspot.com/2024/06/aws-rdscloudshellsql.html)

Cloud Shellに接続して、csvファイルを5個アップロードしておきます。


Cloud Shell からRDSで立ち上げたMySQLに接続します。まず、データベースとテーブルを(1)のSQL文で作成します。テーブルまで作成したら、csvからデータをインポートします。
テーブルの中身を全て削除するときは、truncateでやりますが、今回外部キー制約を入れてあるので、制約を一度解除してからtruncateすればテーブルの中身は消すことができます。
各テーブルに対して、select文で確認してみましょう。
他のテーブルも内容が入っているか確認してください。

(3) テーブルのリレーションを利用
corporationテーブルを表示すると、各テーブルのidで出力されます。この参照しているidを外部テーブルから値を取得するにはjoinを使います。
このように実行すると、値を連携することができます。

(4) データベースのバックアップ
最後に、今回作成した「disaster」データベースをテーブル、データごとバックアップします。
mysqldump -u admin -p --host=各自のエンドポイント disaster > disaster_backup.sql
これでCloud Shell上にバックアップが作成できました。

以上で、エクセルで正規化したデータをデータベースに格納することができました。またバックアップも取得できました。

0 件のコメント:

コメントを投稿