OBERをトコトン極める

Oracleデータ移行 応用編

  • 2018.11.05
  • 株式会社システムインテグレータ
Oracleデータ移行 応用編

データ移行機能のもう少し深い話

こんにちは、皆さん頑張って設計していますか?
SI Object Browser ER(以下OBER)はER図を用いたデータモデリングツールですが、前回「実はデータ移行もできますよ」ということで、データ移行機能の基礎についてご紹介させていただきました。今回はその応用編です。もう少し凝ったこともできるんです。

Oracleデータ移行 移行時にデータを加工する

今回は下記の社員テーブルの移行を例に説明します。前回同様、下記テーブル及びデータをOracleからPostgreSQLへ移行していきます。

テーブル名:MST_EMP
カラム:       EMP_CODE          NUMBER(5,0)※主キー
              LAST_NAME        VARCHAR2(100)
              FIRST_NAME       VARCHAR2(100)
              ZIP                       VARCHAR2(100)
              TEL                      VARCHAR2(20)
              MAIL                    VARCHAR2(50)

まずは、データ移行画面を開くところ(移行直前)まで持っていきましょう。ここまでの操作方法は前回の記事を参照してください。記事ではストレートに移行していますが、今回は値の加工に挑戦します。
データ移行画面の「詳細設定」ボタンを押すと、「データ移行詳細」画面が展開します。

1

データ移行画面

ここで各カラムごとに加工する値を設定できます。デフォルトでは「移行元の値」となっており、この場合その名の通り移行元のデータをそのまま移行します。選択できる項目は以下のとおりです。

移行元の値 移行元のテーブルからデータを取得し、そのまま移行先にセットする
NULL NULLをセットする
固定値 指定した文字列や数値をセットする(全レコード)
マスキング 指定した文字をセットする(全レコード)その文字で全桁埋める
セットしない 指定したカラムに対する移行処理をスキップする

使い方としては

  • 一旦データをクリアしたい場合にNULLをセット
  • NOTNULLだからとりあえず固定値をセット
  • 本番環境からデータを持ってくるので電話番号はマスキングを指定して全桁「*」にしておく

など、様々です。

2

「TEL」をマスキング

Oracleデータ移行 Viewを使用する

続いては、移行元データをビューから取得する方法をご紹介します。通常はテーブルからデータを取得するのですが、実はビューを指定することもできます。データ移行画面の「移行元テーブル」欄は手動入力が可能となっており、ここでビュー名を指定することによって参照元を変更することが可能です。

移行のタイミングで新設されたカラムに結合データを入れたり、計算結果を格納することなども可能です。
今回はLAST_NAMEとFIRST_NAMEが移行先で結合され、NAMEという一つのカラムとして再作成された、という設定で移行してみましょう。
移行元で下記のようなビューを作成します。

CREATE OR REPLACE VIEW "OBER"."V_MST_EMP"
    ("EMP_CODE","NAME","ZIP","TEL","MAIL","UPDDATE")
AS
SELECT EMP_CODE,LAST_NAME || ' ' || FIRST_NAME NAME,ZIP,TEL,MAIL,UPDDATE FROM MST_EMP

移行先でもあらたにMST_EMP2を作りました。LAST_NAMEとFIRST_NAMEが廃止され、NAMEが定義されています。では、手順通りデータ移行画面まで進みます。

同じ名称のテーブルが存在しないので自動マッピングが行われず、以降元テーブル欄が空になっていることがわかります。ここに定義したビューを記述します。

3

ビューを使用した移行

あとは通常通り、移行ボタンを押すだけです。詳細設定で必要に応じてデータを加工することもできます。
苗字と名前が結合され、NAMEに移行されました。

4

名字と名前が結合されNAMEに格納された

Oracleデータ移行 まとめ

いかがでしたか。二回に渡ってデータ移行についてご紹介しました。今回は応用編として、データを加工しながら移行する方法を解説しましたが、ビューを使用することによりいろいろな移行が可能になります。例えば〇〇年以前の古いデータを移行のタイミングで破棄することも、WHERE句を用いてデータを絞ったビューを作成すれば簡単に行なえます。〇〇カラムがXXの場合はキー項目の先頭に△△を付加する、といった定義の変更にも移行しながら対応できます。
移行元テーブル欄も、現状は手動入力で行う運用となっておりますが、予めビューを移行元候補にする機能改善も検討しておりますので、ぜひOBERのデータ移行を使用してみてください。

SI Object Browser ER ガイドブック

SI Object Browser 製品カタログ