データ移行機能のもう少し深い話
こんにちは、皆さん頑張って設計していますか?
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)
まずは、データ移行画面を開くところ(移行直前)まで持っていきましょう。ここまでの操作方法は前回の記事を参照してください。記事ではストレートに移行していますが、今回は値の加工に挑戦します。
データ移行画面の「詳細設定」ボタンを押すと、「データ移行詳細」画面が展開します。
データ移行画面
ここで各カラムごとに加工する値を設定できます。デフォルトでは「移行元の値」となっており、この場合その名の通り移行元のデータをそのまま移行します。選択できる項目は以下のとおりです。
移行元の値 | 移行元のテーブルからデータを取得し、そのまま移行先にセットする |
---|---|
NULL | NULLをセットする |
固定値 | 指定した文字列や数値をセットする(全レコード) |
マスキング | 指定した文字をセットする(全レコード)その文字で全桁埋める |
セットしない | 指定したカラムに対する移行処理をスキップする |
使い方としては
- 一旦データをクリアしたい場合にNULLをセット
- NOTNULLだからとりあえず固定値をセット
- 本番環境からデータを持ってくるので電話番号はマスキングを指定して全桁「*」にしておく
など、様々です。
「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が定義されています。では、手順通りデータ移行画面まで進みます。
同じ名称のテーブルが存在しないので自動マッピングが行われず、以降元テーブル欄が空になっていることがわかります。ここに定義したビューを記述します。
ビューを使用した移行
あとは通常通り、移行ボタンを押すだけです。詳細設定で必要に応じてデータを加工することもできます。
苗字と名前が結合され、NAMEに移行されました。
名字と名前が結合されNAMEに格納された
Oracleデータ移行 まとめ
いかがでしたか。二回に渡ってデータ移行についてご紹介しました。今回は応用編として、データを加工しながら移行する方法を解説しましたが、ビューを使用することによりいろいろな移行が可能になります。例えば〇〇年以前の古いデータを移行のタイミングで破棄することも、WHERE句を用いてデータを絞ったビューを作成すれば簡単に行なえます。〇〇カラムがXXの場合はキー項目の先頭に△△を付加する、といった定義の変更にも移行しながら対応できます。
移行元テーブル欄も、現状は手動入力で行う運用となっておりますが、予めビューを移行元候補にする機能改善も検討しておりますので、ぜひOBERのデータ移行を使用してみてください。
- カテゴリ:
- キーワード: