オンプレからクラウドへの移行 IBM Lift チュートリアル: (2)SQL ServerをIBM のクラウドDBへ


このチュートリアルでは、オンプレのMicrosoft SQL Serverからクラウドへのデータベース移行ツール IBM Liftを使って、Db2 on Cloudへデータを移行する方法をご紹介します

前準備

このチュートリアルの前提

  • 移行元はオンプレにあるSQL Server
  • 移行先はDb2 on Cloud
    • パスワードは「PASSWORDxxxxxxxx」としています
    • ホスト名はdashdb-txn-xxxxx.netとしています

ご参考情報

IBM Liftとは?インストールとは?はこちらの記事をご覧ください
https://qiita.com/azzeten/items/525479b9817cbdd6ce25

ざっくりの手順はこちら

  1. SQL Serverからデータを抜き出して、一時的にクライアントPCに保存します
  2. 移行先のDb2 on CloudにDDLを実行して、移行先テーブルを作成します。
  3. クライアントPCに保存されたCSVファイルを、Db2 on Cloudのあるクラウド上にアップロードします。この時点ではまだロードされません。単純にファイルがクラウドに転送されただけのイメージです。
  4. クラウドに転送されたCSVファイルを、Db2 on Cloudの先程作成した表にロードします

Liftでマイグレーション!!

Step1: 移行元のSQL Serverの状態を確認

  • DBは hogemssqlです。接続ユーザはsaでパスワードは「P@55w0rd」です
  • スキーマはhogeです
  • テーブル名はtesttableで中身は以下のとおり

Step2: 移行先でDDLを実行

Db2 on Cloudで、テーブル定義を先に設定しておきます。

CREATE TABLE LIFT_TESTMS (COL1 INT, COL2 CHAR(10));

Step3: liftを使ってSQL Serverから移行

データを、(1)SQL Serverから抜き出し (2)クラウドにアップして、(3)Db2 on Cloudにロードします

# (1) SQL Serverからデータを抜き出す。 lift extract コマンド。
# 抜き出す際のCSV名は「testliftms.csv」としています

$ sudo lift extract --source-schema hoge --source-table testtable --source-database hogemssql --source-host localhost --source-user sa --source-password P@55w0rd --source-database-port 1401 --source-database-type sqlserver --file testliftms.csv
Password:
Extracting from table 'testtable' to /opt/lift-cli/bin/testliftms.csv
[##########] Extracted 46 B
Extracted 46 B (3 of 3 rows) from table 'testtable' to /opt/lift-cli/bin/testliftms.csv in < 1 second at an average rate of < 1 Mb/s

# lsでCSVができているかを確認します
$ ls
lift                        run20180503145755373-506312 testliftms.csv
liftMain                    setupEnv.sh

# 念の為中身を確認します。さきほどのキャプチャと合っています。
$ cat testliftms.csv
1,"aaa       "
2,"bbb       "
30,"ccc       "

# (2)データをクラウドにアップします。  lift putコマンドです。
$ sudo lift put --file testliftms.csv --target-user  jln84695 --target-password PASSWORDxxxxxxxx --target-host dashdb-txn-xxxxx.net

Putting file /opt/lift-cli/bin/testliftms.csv (size 46B) at a maximum throughput of 500.00 Mb/s.
[##########] Put 46/46 B at < 1 Mb/s (0 sec remain)
Transferred file /opt/lift-cli/bin/testliftms.csv in 7 seconds at average throughput of < 1 Mb/s.
The file transfer completed successfully.



# (3) クラウドにアップされたデータをDb2 on Cloudに先程作ったテーブル「LIFT_TESTMS」表へロードします

$ sudo lift load --filename testliftms.csv --target-schema JLN84695 --target-table LIFT_TESTMS --file-origin extract-sqlserver --target-user  jln84695 --target-password PASSWORDxxxxxxxx --target-host dashdb-txn-xxxxx.net

Loading file testliftms.csv into JLN84695.LIFT_TESTMS
Loaded file testliftms.csv into "JLN84695"."LIFT_TESTMS" in 1 seconds
Load Id: 626844897
Details
  Rows loaded: 3
  Rows skipped: 0
  Rows rejected: 0
  Rows deleted: 0

Step4: 移行を確認

Db2 on Cloudの画面から確認をします。
以下のように、ロードされています!!