[Db2] オンプレからクラウド(DBaaS)へのデータ移行方法


# 概要

データを**Db2 on Cloud**/**Db2 Warehouse on Cloud** (以下**Db2WoC**と表記)へロードするため、
IBM Cloud内へのデータ転送方法や、データベースへのデータロード・ツールが 複数提供されており、
環境やデータサイズなど状況に合わせた使い分けができます。

本記事では、各手法・ツールについて 紹介します。


# 手法

**Db2 on Cloud**や**Db2WoC**への データロードを行う場合、
大まかに 以下のような状況が 想定されます。

+ [**ファイルからデータをロードする**](https://qiita.com/Haruka-Ogawa/items/8f2e770195780b304c09#1-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AD%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%A0%B4%E5%90%88)
+ [**DBに格納されているデータをロードする**](https://qiita.com/Haruka-Ogawa/items/8f2e770195780b304c09#2-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AD%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8Cdb%E3%81%AB%E6%A0%BC%E7%B4%8D%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88)
+ [**大容量データをIBM Cloudへ持ち込む**](https://qiita.com/Haruka-Ogawa/items/8f2e770195780b304c09#3-%E5%A4%A7%E5%AE%B9%E9%87%8F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92ibm-cloud%E3%81%B8%E6%8C%81%E3%81%A1%E8%BE%BC%E3%82%80%E3%81%9F%E3%82%81%E3%81%AE%E6%96%B9%E6%B3%95)


それぞれの状況に適した 手法/ツールを、以下に記述します。


## (1) データロード方法（データがファイルの場合）

データがファイル形式の場合、データロードするための手法がいくつか用意されています。

各手法と特徴を 以下の表に記述します。

<table>
  <caption>元データがファイルの場合のデータロード方法</caption>
  <thead>
    <tr>
      <th>ツール/手法</th> <th>特徴</th>
    </tr>
  </thead>

  <tr>
    <td><b>Webコンソール（Load from Desktop）</b></td>
    <td>
     <ul>
      <li>ローカルからDb2 on Cloud, Db2WoC へ、小規模データをロードする場合に 有用な手法</li>
      <li> Webコンソールへのドラッグ＆ドロップによりDb2 on Cloud, Db2WoC環境へのファイル転送からロードまで実施する</li>
      <li>テーブルは、移行先のDb2 on Cloud, Db2WoC環境に事前に作成しておく必要がある（Webコンソール上で実行可能）</li>
      <li>データサイズ：<b>500MB未満</b></li>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2oc?topic=data-loading-from-local-host-file">
         [Db2 on Cloud] ローカル・ファイルまたはホスト・ファイルからのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2woc?topic=data-loading-from-local-host-file">
         [Db2 Warehouse on Cloud] ローカル・ファイルまたはホスト・ファイルからのデータのロード
        </a>
       </li>
       <li>
        <a href="https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-load_local">
         [Db2 Warehouse on Cloud] IBM Cloud資料：ローカル・システムからのデータのロード
        </a>
       </li>
      </ul>
      </li>
     </ul>
　　</td>
  </tr>


  <tr>
    <td><b>Webコンソール（ Load from Cloud Storage(ICOS, S3) ）</b></td>
    <td>
      <ul>
      <li>クラウドストレージ（S3, ICOS）からDb2 on Cloud, Db2WoC へ、小規模データをロードする場合に 有用な手法
      </li>
      <li>Webコンソール上で、クラウドストレージ（S3, ICOS）にある データファイル（CSV）を選択し、Db2 on Cloud/Db2WoC環境へのファイル転送・ロードを実施する
      </li>
      <li>テーブルは、移行先のDb2 on Cloud, Db2WoC環境に事前に作成しておく必要がある（Webコンソール上で実行可能）</li>
      <li>データサイズ：ホーム・ディレクトリーのフリー・スペースの 80% 以内のサイズの場合<b></b></li>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2oc?topic=data-loading-cloud">
        [Db2 on Cloud] IBM Cloud へのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2oc?topic=s3-loading-data-from-file-amazon">
        [Db2 on Cloud] Amazon S3 上のファイルからのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2woc?topic=data-loading-cloud">
        [Db2 Warehouse on Cloud] IBM Cloud へのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2woc?topic=s3-loading-data-from-file-amazon">
        [Db2 Warehouse on Cloud] Amazon S3 上のファイルからのデータのロード
        </a>
       </li>
      </ul>
      </li>
     </ul>
　　</td>
  </tr>


  <tr>
    <td><b>LOADコマンド</b></td>
    <td>
     <ul>
      <li>従来からDb2で利用可能なデータ移動コマンド</li>
      <li>主に行指向テーブルへのデータ取り込みに多く利用され、実績が多い</li>
      <li>クラウドストレージ(ICOS, S3など)からデータロード可能</li>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=commands-load">
         [Db2 v11.5]　LOAD コマンド
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2oc?topic=data-loading-cloud">
         [Db2 on Cloud] IBM Cloud へのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2woc?topic=data-loading-cloud">
         [Db2 Warehouse on Cloud] IBM Cloud へのデータのロード
        </a>
       </li>
       <li>
        <a href="https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-load_cos#cos_load">
         [Db2 Warehouse on Cloud] IBM Cloud資料：IBM Cloud Object Storage からのデータのロード>Db2 LOAD ユーティリティー
        </a>
       </li>
       <li>
        <a href="https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-load_s3#aws_s3_load">
         [Db2 Warehouse on Cloud] IBM Cloud資料：Amazon S3 からのデータのロード>Db2 LOAD ユーティリティー
        </a>
       </li>
       </ul>
     </ul>
　　</td>
  </tr>

  <tr>
    <td><b>外部表ロード</b></td>
    <td>
     <ul>
      <li>ファイルをDB表としてアクセスする手法、データ移行にも活用可能</li>
      <li>ターゲット表が列指向テーブルである場合、特に高速</li>
      <li>クラウドストレージ(ICOS, S3など)からデータロード可能</li>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=commands-load">
         [Db2 v11.5]　LOAD コマンド
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2oc?topic=data-loading-cloud">
         [Db2 on Cloud] IBM Cloud へのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2oc?topic=s3-loading-data-from-file-amazon">
         [Db2 on Cloud] Amazon S3 上のファイルからのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2woc?topic=data-loading-cloud">
         [Db2 Warehouse on Cloud] IBM Cloud へのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2woc?topic=s3-loading-data-from-file-amazon">
         [Db2 Warehouse on Cloud] Amazon S3 上のファイルからのデータのロード
        </a>
       </li>
       <li>
        <a href="https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-load_cos#cos_et">
         [Db2 Warehouse on Cloud] IBM Cloud資料：IBM Cloud Object Storage からのデータのロード>外部テーブル
        </a>
       </li>
       <li>
        <a href="https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-load_s3#aws_s3_et">
         [Db2 Warehouse on Cloud] IBM Cloud資料：Amazon S3 からのデータのロード>外部テーブル
        </a>
       </li>
       </ul>
     </ul>
　　</td>
  </tr>

  <tr>
    <td><b>メールインドライブ</b></td>
    <td>
     <ul>
      <li>USB ドライブを IBM に郵送し、使用中のデータベース・インスタンスにデータを直接ロードできる</li>
      <li>USB ドライブは IBM データ・センターでホストされるので、データは専用データ・センター・ネットワークを介して転送される</li>
      <li>ドライブ暗号化にも対応</li>
      <li>データ・セットのサイズとネットワークの転送速度のサンプルは以下の通り</li>
      <ul>
       <li>（データセットサイズ, データ転送速度）・・・<br>
       （<b>8TB</b>, <b>70 Gb/時間</b>）,<br>
       （<b>4TB</b>, <b>35 Gb/時間</b>）,<br>
       （<b>2TB</b>, <b>16 Gb/時間</b>）,<br>
       （<b>1TB</b>, <b>8 Gb/時間</b>）<br></li>
       </ul>
      <li>このオプションの支援が必要な場合は、IBM Cloud Data Services 営業担当員に問い合わせるか、dashDB_Info@wwpdl.vnet.ibm.com 宛にメールを送信する</li>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2oc?topic=data-loading-from-mail-in-drive">
         [Db2 on Cloud] メールイン・ドライブからのデータのロード
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2woc?topic=data-loading-from-mail-in-drive">
         [Db2 Warehouse on Cloud] メールイン・ドライブからのデータのロード
        </a>
       </li>
       </ul>
     </ul>
　　</td>
  </tr>

</table>



## (2) データロード方法（データがDBに格納されている場合）

データがDBに格納されている場合、データロードするための手法がいくつか用意されています。

各手法の特徴を 以下の表に記述します。

<table>
  <caption>元データがDBに格納されている場合のデータロード方法</caption>
  <thead>
    <tr>
      <th>ツール/手法</th> <th>特徴</th>
    </tr>
  </thead>

  <tr>
    <td><b>カタログ経由のカーソルロード</b></td>
    <td>
     <ul>
      <li>中間ファイル生成不要なデータ移行方法であり非常に高速</li>
      <li>ソースはDb2限定</li>
      <li>カタログ作成はサポート部門に依頼する必要あり</li>
      <li>テーブル その他のオブジェクト定義は db2look で移行</li>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=data-moving-using-cursor-file-type">
         [Db2 v11.5]　CURSOR ファイル・タイプを使用したデータの移動
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=statements-declare-cursor">
         [Db2 v11.5]　DECLARE CURSOR ステートメント
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/mysupport/s/question/0D50z00005q87UeCAI/db-%E3%82%92%E3%81%BE%E3%81%9F%E3%81%8C%E3%81%A3%E3%81%9F%E3%82%AB%E3%83%BC%E3%82%BD%E3%83%AB%E3%83%AD%E3%83%BC%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6?language=ja">
         IBM Support-Forums:DB をまたがったカーソルロードを実行する方法について
        </a>
       </li>
      </ul>
     </ul>
　　</td>
  </tr>

  <tr>
    <td><b>ニックネーム経由のカーソルロード</b></td>
    <td>
     <ul>
      <li>中間ファイル生成不要なデータ移行方法であり非常に高速</li>
      <li>ソースDBとして他社製DB(Oracle, SQL Server等)も利用可</li>
      <ul>
       <li>フェデレーションとしてサポートされるDBであることが条件</li>
      </ul>
      <li>テーブルその他のオブジェクト定義は db2look で移行</li>
      <li>ターゲット表が行指向テーブルである場合に高速</li>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=data-moving-using-cursor-file-type">
         [Db2 v11.5]　CURSOR ファイル・タイプを使用したデータの移動
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=statements-declare-cursor">
         [Db2 v11.5]　DECLARE CURSOR ステートメント
        </a>
       </li>
       <li>
        <a href="https://www.idug.org/blogs/matthias-nicola1/2020/11/04/the-need-for-speed-how-to-move-your-data-from-ground-to-cloud">
         The Need for Speed:  How to Move your Data from Ground to Cloud (idug.org) > Federation
        </a>
       </li>
      </ul>
     </ul>
　　</td>
  </tr>

  <tr>
    <td><b>ニックネーム経由のINSERT(外部表)</b></td>
    <td>
     <ul>
      <li>ターゲット表が列指向テーブルである場合に高速</li>
      <li>テーブルその他のオブジェクト定義は db2look で移行</li>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=applications-federated-external-tables">
         [Db2 v11.5] フェデレーテッド外部表
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=statements-create-external-table">
         [Db2 v11.5] CREATE EXTERNAL TABLE ステートメント
        </a>
       </li>
      </ul>
     </ul>
　　</td>
  </tr>

  <tr>
    <td><b>Db2 Migration Service ツール</b></td>
    <td>
     <ul>
      <li>Tech Preview, 2022年10月時点では実働環境で使用不可</li>
      <li>インストールが必要、2022年10月時点Linuxのみサポート</li>
      <li>移行可能な組み合わせ：</li>
      <ul>
       <li>Db2 から Db2</li>
       <li>Db2 をクラウド・プラットフォーム上の Db2 に</li>
       <li>Db2 ファイルを Db2 に</li>
       <li>Db2 を Db2 ファイルに</li>
       <li>Netezza から Db2</li>
       <li>db2cloneを使用して Db2 データベースを複製する。(to Db2U)</li>
      </ul>
      <li>参考：</li>
      <ul>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2/11.5?topic=db2-migration-service">
         [Db2 v11.5] IBM Db2 マイグレーション・サービス
        </a>
       </li>
      </ul>
     </ul>
　　</td>
  </tr>
</table>

## (3) 大容量データをIBM Cloudへ持ち込むための方法

テラバイト単位からペタバイト単位までのデータを IBM Cloud に持ち込みたい場合には、
物理的に転送するための手法が用意されています。

手法と特徴を 以下の表に記述します。

<table>
  <caption>大容量データをIBM Cloudへ持ち込むための方法</caption>
  <thead>
    <tr>
      <th>ツール/手法</th>
      <th>特徴</th>
    </tr>
  </thead>

  <tr>
   <td><b>IBM Cloud Mass Data Migration Service</b></td>
   <td>
    <ul>
     <li><b>IBM Cloud Mass Data Migration Service (MDMS)</b> デバイスを使用</li>
     <li>IBM Cloudの外にあるデータをICOSへ物理的に転送する</li>
     <li>装置1つあたりの記憶容量：<b>120TB</b></li>
     <li>参考：</li>
      <ul>
       <li>
        <a href="https://cloud.ibm.com/docs/mass-data-migration?topic=mass-data-migration-about">
          IBM Cloud資料: Mass Data Migration の概要
        </a>
       </li>
       <li>
        <a href="https://cloud.ibm.com/docs/Db2onCloud?topic=Db2onCloud-migration#mdms">
         [Db2 on Cloud] IBM Cloud資料: IBM Cloud へのデータ・マイグレーション
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2oc?topic=data-loading-cloud">
         [Db2 on Cloud] IBM Cloud へのデータのロード
        </a>
       </li>
       <li>
        <a href="https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-pda">
          [Db2 Warehouse on Cloud] IBM Cloud資料: IBM Cloud Mass Data Migration Service を使用した IBM PureData System for Analytics (Netezza) からのマイグレーション
        </a>
       </li>
       <li>
        <a href="https://www.ibm.com/docs/ja/db2woc?topic=data-loading-cloud">
         [Db2 Warehouse on Cloud]IBM Cloud へのデータのロード
        </a>
       </li>
      </ul>
    </ul>
　　</td>
  </tr>

</table>


### 補足

ソースDBからのデータ抽出/クラウドへの転送/ロードを行うCUIツールとして提供されていました**IBM Lift CLI**は、2022年4月に廃止されました。

・What's New in IBM Db2 Warehouse on Cloud > 14 April 2022
https://www.ibm.com/support/pages/whats-new-ibm-db2-warehouse-cloud

# 参考情報

・Db2 v11.5
https://www.ibm.com/docs/ja/db2/11.5

・IBM Db2 on Cloud
https://www.ibm.com/docs/ja/db2oc

・IBM Cloud資料：Db2 on Cloud
https://cloud.ibm.com/docs/Db2onCloud

・IBM Db2 Warehouse on Cloud
https://www.ibm.com/docs/ja/db2woc

・IBM Cloud資料：Db2 Warehouse on Cloud
https://cloud.ibm.com/docs/Db2whc