Db2 on Cloud上のテーブルにCSVファイルをロードする

`「Db2 on Cloudを使ってみる」シリーズ`

Db2 on Cloud上のテーブルにCSVファイルをロードする方法はいくつかありますが、当記事ではWebコンソール(GUI)からロードする方法を説明します。

既存テーブルにロードに加えて、CSVファイルからテーブルを作成してロードもできます。当記事では両方説明します。

# 前提
Db2 on Cloudのサービスは作成済みであることを前提としています。
Db2 on CloudはLiteプランで無料で使えますので、お試しになりたい方は以下の記事を参考に作成してみてください。

- [Db2 on CloudをLiteプラン(無料)で作成](https://qiita.com/nishikyon/items/0219a81673f0b84980da)


# 0. 前準備1: CSVデータの準備
お手持ちのCSVファイルを使用してもOKです。

当記事では2021年8月現在オープンデータとして公開されている「東京都 新型コロナウイルス陽性患者発表詳細」というデータを使用して説明します。

以下からPCへダウンロードします：
https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv

文字コードはUTF-8(BOM付き)です。

# 0. 前準備2: IBM Cloudにログインし、Webコンソールを表示する
以下を参照して表示してください:
[Db2 on Cloud: Web管理コンソールの表示](https://qiita.com/nishikyon/items/2d00ba97a66838742320)


これで準備はできました！

# 1. 左側のメニューからデータをクリック

横線のメニューをクリックするとアイコンに説明がつきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b0ed46c4-a96e-2145-341c-b374c9c89f9e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/d5f72154-47c4-f9eb-8a42-c6149465b73f.png)

説明なしのアイコンのままでクリックしてもOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8e301009-6abe-a67f-0e6d-871f0483bcd2.png)


# 2.  「ファイルの選択」の下のエリアに前準備1で準備したロードするCSVファイルをドラックします。
「データのロード」画面が表示されていない場合は、「データのロード」をクリックして、表示してから実施してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/d0bbb2e2-07e5-5c1c-4b28-4e015d53a1c1.png)

選択されたファイルの下にファイル名が表示されたら、「次へ」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b845f44f-1367-c628-bd9c-4a983f95cb06.png)

# 3. 「ロード・ターゲットの選択」の画面でロード先のスキーマをクリックします。
Liteプランの場合は1つだけ表示されています(スキーマの新規作成はできません）ので、それをクリックします。
Liteプランでない場合は、ロードしたいテーブルがあるスキーマまたはロードするテーブルを作りたいスキーマをクリックしてください。スキーマを新規に作りたい場合は上部メニューの「スキーマ」から作成して、その後この画面に戻ってください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/31a8c4ea-dde0-0246-4cd3-a114c7734feb.png)

クリックしたスキーマの表（テーブル）一覧が表示されます。

# 4-a. 表（テーブル）を新規作成する場合
既存の表にロードする場合は 4-bに進んでください。
##4-a-1.「新規表+」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/ab267ebe-0e6a-147e-812e-72e9419648a4.png)

## 4-a-2.　新規表の作成画面で表名を入力し、「作成」をクリック
ここでは`COVID_19_TOKYO`としています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5de4657d-d7a1-da1b-0cd6-11daa1174c6d.png)

## 4-a-3. 4-a-2で入力した表名にチェックが入っていることを確認し「次へ」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5ff2b5c8-9176-727f-2d1f-cc9a7cd61e8b.png)

## 4-a-4. 必要に応じて、属性や列名を編集する
CSVファイルを読んで、適当な属性がセットされます。
「先頭行のヘッダー」が「ON」　の場合は、列名はヘッダーの値になります。「東京都 新型コロナウイルス陽性患者発表詳細」のデータを使用している場合は「ON」のままでよいです。
自分の準備した先頭行がデータ（列名なし）の場合は、「先頭行のヘッダー」を「OFF」にしてください。

セットされた属性は時に意図しないものであったり、長さが足りなかったりすることがありますので、必要に応じて変更します。データ量の少ないファイルであればあまり問題ないかとは思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/91c748a8-59b3-f5e7-b165-029248746998.png)

前準備1の「東京都 新型コロナウイルス陽性患者発表詳細」のデータを使用する場合は、以下のように属性を変更してください。結構長さが微妙なので長めにしてあります。

| 列名                    | 属性    | 長さ |
|-------------------------|---------|--------|
| No                      | INTEGER | 　     |
| 全国地方公共団体コード  | VARCHAR | 6      |
| 都道府県名              | VARCHAR | 128    |
| 市区町村名              | DATE    | 　     |
| 公表_年月日             | DATE    | 　     |
| 発症_年月日             | DATE    | 　     |
| 確定_年月日             | DATE    | 　     |
| 患者_居住地             | VARCHAR | 128    |
| 患者_年代               | VARCHAR | 16     |
| 患者_性別               | VARCHAR | 16     |
| 患者_職業               | VARCHAR | 64     |
| 患者_状態               | VARCHAR | 128    |
| 患者_症状               | VARCHAR | 128    |
| 患者_渡航歴の有無フラグ | CHAR    | 1      |
| 患者_接触歴の有無フラグ | CHAR    | 1      |
| 備考                    | VARCHAR | 128    |
| 退院済フラグ            | CHAR    | 1      |


属性が見えない場合は列の境界をドラッグして広げて表示させてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/bc0ae570-1c4a-732a-1c33-cfc7cde94469.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/382c7c1a-1622-3750-7fd2-516d2b471f8f.png)

Data typeや長さを変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/9e9ca6f8-2661-d5ba-f63a-fb82e3d6d534.png)

**変更が終了したら5に進みます**

# 4-b. 既存の表にロードする場合　
参考までに空の表は普通のDb2と同じく、SQLで作成できます。
GUIでいちいち属性を変えたくない場合はこちらの方法であらかじめ作成することもできます。
[Db2 on Cloudにテーブル作成](https://qiita.com/nishikyon/items/f13e376b00daaa71adeb)

## 4-b-1.ロード先の表名をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e52f2342-889c-b088-e5de-dc61cb4dcda8.png)

## 4-b-2.「新規データの追加」　または　「新規データによる表の上書き」を選んで、「次へ」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5a1662cd-3dd2-4b55-95c2-d593c941ae68.png)

# 5. ファイル属性を確認し、必要に応じて変更し、「次へ」をクリック
コードページ(ファイルの文字コード)が合っているか、DATEやTIMETAMPを属性に使用する場合は日付形式、時刻形式、タイムスタンプ形式が合っているか確認し、違っている場合は修正します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/41be8362-1329-54f4-e14c-62045b50de0f.png)

# 6. 設定を確認し、「ロードの開始」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/0483e37c-6e99-b1f2-b617-3066741c89be.png)

しばらく経つとロードが完了します。エラーや警告があった場合は右側のエラーまたは警告に表示されます。
ロードされた行数と拒否された行数、エラーと警告あるなしで全て正しくロードされたか確認します。
(通知はどこか通知以外のエリアをクリックすれば消えます)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4c1199fb-74f0-66d3-c7a1-85bc2a1dd836.png)

表の表示をクリックしてデータを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8a8ad28a-80e1-ba41-b1a5-8acc8923db23.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/085350b2-61f7-5a05-cf14-10297a46bf20.png)

# 7. 確認
テーブルを確認します。
7-1: 上のメニューから「表」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/1406f1f8-63ac-892d-0d2a-a2736ea64760.png)

7-2：　ロード先のスキーマををクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/56ba96be-677f-9430-f1fa-c62aa8656908.png)

7-3：　　ロード先のテーブル名が見えるのを確認し、テーブル名をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/324a4f4e-4cb9-f5d8-3e2b-98da39349dd6.png)

7-4：　更新日時を確認（ただし日本時間ではなくUTC、ロードのログと数分ずれてる？？？)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/26b73222-e42f-89e9-e509-eaad20a444a0.png)
さらにデータの表示をクリックし、データを参照することもできます。

本格的にはSQL等でQueryなどしてみてください。

以上です。