OracleからPostgreSQLにデータを移行してみよう

 2018.09.18  株式会社システムインテグレータ

データベース設計の基礎が身につく​ ER図の書き方講座

設計以外にできること

こんにちは、皆さん頑張って設計していますか?

SI Object Browser ER(以下OBER)はER図を用いたデータモデリングツールであり、これまでいろいろな設計方法をご紹介してきましたが、過去に「ER図データベース移行心得」でも触れたように、異なるデータベース間でのデータ移行機能も備わっています。Ver.9からの機能となりますが、最近この機能に対するお問い合わせも増えてきておりますので、ここでその操作方法をご紹介していきましょう。

OracleからPostgreSQLにデータを移行してみよう 準備編

では、OracleからPostgreSQLにデータ移行するケースを例にご説明していきます。「データベース移行って大変なんじゃないの?」と思われるかもしれませんが、そんな事はありません。OBERではどなたでも簡単にデータベース移行ができるように、「データ移行ナビ」なるナビゲーション画面をご用意しております。ユーザーの皆様はメニューバーより「データベース」→「データ移行」と進んでいただき、展開された画面の指示通りに1~6まで順を追って作業するだけです。では早速見ていきましょう。

1.移行元データベースをOBERに取り込む

まずは移行元データベース(今回はOracleですね)に接続、リバースエンジニアリングを行ってER図を作成します。

OracleからPostgreSQLにデータを移行してみよう 1

手順その1

2.データベースタイプを変更する

続いて、データベースタイプを変更します。画面内の「モデルのプロパティ画面はこちら」より進み、データベースタイプを今回の移行先であるPostgreSQLに変更します。過去ブログでもたまに出てきていましたが、データベースタイプを変更するとデータ型や区切り文字、日付関数なども合わせて一括変更してくれるので便利です。

OracleからPostgreSQLにデータを移行してみよう 2

手順その2

3.日付型デフォルト値などを手動で調整する(任意)

2の作業でデータ型や日付タイプなどは「データ型一括変換」画面や「日付型関数一括変換」画面に設定されているマッピングどおりに一括で変換されます。ここではその設定を見直す場合や、移行を機にオブジェクト名を一括変換したい場合(オブジェクト名一括変換画面で実行)に立ち止まります。 特に変更がなければ飛ばしてしまいましょう。なお、それぞれの一括変換画面は画面のリンクより遷移可能です。

OracleからPostgreSQLにデータを移行してみよう 3

データベース設計の基礎が身につく​ ER図の書き方講座
新規CTA

手順その3

4.モデルを検証する

ここまでの手順で、モデルがPostgreSQL用に変更されました。次はフォワードエンジニアリングを実行してテーブルを作成するのですが、その前にモデルが問題なく移行先データベースに作成できるか確認する必要があります。データ型が合致しているか、オブジェクト名の長さは問題ないか、などです。目視で行うとしたら相当時間がかかってしまいますが、ここはOBERの「モデル検証」機能を使用します。移行ナビ手順④のリンクから、モデル検証画面を呼び出しましょう。

OracleからPostgreSQLにデータを移行してみよう 4

モデル検証結果

そのままでは移行時にエラーとなるものから、スキーマ設定有無のように確認レベルのものも出力されます。自動変換していれば防げるものがほとんどですが(今回はわざとエラーが出るように細工をしました。)、データベースごとに異なるオブジェクト名の長さの限界値などはここで確認すると効率が良いです。リストを選択すれば該当エンティティに飛べますので、エラーが無くなるまで修正を繰り返します。
なお、検証項目は検証内容タブの下記の内容となります。それぞれチェックするかどうかは選択可能です。

OracleからPostgreSQLにデータを移行してみよう 5

検証内容タブ

OracleからPostgreSQLにデータを移行してみよう 実行編

5.OBERを移行先データベースへ反映する

準備が整いましたので、いよいよテーブルの移行を開始します。とは言っても、フォワードエンジニアリングを行うだけです。移行ナビのリンクからフォワードエンジニアリング画面を呼び出し、移行先PostgreSQLに接続して実行します。

6.移行設定を行いデータを移行する

テーブルが作成できたら、いよいよデータを移行します。下記よりデータ移行画面を呼び出しましょう。

OracleからPostgreSQLにデータを移行してみよう 6

手順その6

OracleからPostgreSQLにデータを移行してみよう 7

データ移行画面

移行先はモデル値となりますので、すでに移行先テーブル名が入っています。まずは移行元に接続します。同じ名称のテーブルが移行元に存在する場合はこのタイミングで自動マッピングしてくれます。もちろん手動で別テーブルを指定することも可能ですが、その場合テーブルのフォーマットに注意してください。詳細設定画面で、カラムごとに固定値を設定したり、移行対象から外したりと少し細かい設定もできますが、今回はそのまま移行しましょう。
既存データの削除(デフォルトON)、外部キー・トリガーを無視する(デフォルトON)、コミット件数(デフォルト1000)のオプション値を設定して実行です。移行ログは右側に出力される他、ファイルとしても出力されていますので、あとで確認することができます。移行に失敗したデータは一行ごとにログに格納されておりますので※、移行元データから省く、修正するなどの対応が可能です。移行時に一時的に 無効化した外部キーやトリガーを再設定して終了です。

※行エラーの場合

OracleからPostgreSQLにデータを移行してみよう 8

移行ログ

[RELATED_POSTS]

OracleからPostgreSQLにデータを移行してみよう さいごに

いかがでしたか。今回はデータ移行についてご紹介しました。「案外簡単にできるんだな」と思ってもらえたなら幸いですし、実際とても簡単にできます。OBERのデータ移行の特徴として、本来移行に手間のかかるラージオブジェクト型のデータも特別な設定をせずに移行できる点があります。格納された画像データなども右から左に簡単に移行できます。手前味噌ですが、これはちょっとすごいんじゃないかなと思います。 設計だけではなく移行もできるOBER。また、移行に使用したER図はその後のデータベース設計で活用可能なOBER。これからもどんどん利用していきましょう! ※対象DBなどは製品ヘルプをご参照ください。

SI Object Browser ER 製品紹介資料

RELATED POST関連記事


RECENT POST「OBERをトコトン極める」の最新記事


OBERをトコトン極める

「ER図作成ツール」を選ぶポイントとは?

OBERをトコトン極める

より見やすく、より便利に!SI Object Browser ER 23の新機能

OBERをトコトン極める

何気に便利!SI Object Browser ER 22.0.2の新機能

OBERをトコトン極める

細かすぎて伝わらない!SI Object Browser ERの便利技10選

OracleからPostgreSQLにデータを移行してみよう