NEWSニュース&ブログ

【AWS Schema Conversion Tool】テーブルオブジェクトの自動変換にルールを追加してみた

投稿日:2025/6/12

はじめに

こんにちは!システムサポートの目時です。

RDS for OracleからAurora PostgreSQLへの移行等、異種間DBの移行時に課題の一つとしてあげられるのがオブジェクトの変換です。
DB内に何百と存在するオブジェクトを、一つ一つ手作業で変換するのは大変骨の折れる作業です。
そこで活躍するのがAWS Schema Conversion Tool (以下 SCT) !
SCTでは、ソースDBとターゲットDBのスキーマを互換性のある形式に自動変換したり、移行に関する評価レポートを作成したりすることができ、異種間DBの移行時に重宝しています。

今回、このSCTを使用してRDS for Oracle上のテーブルをAurora PostgreSQLへ、自動変換による定義移行を行ってみようと思います!
基本的にはSCTがテーブルのデータ型を自動で変換してくれるのですが、要件によっては自動変換されたものではなく、こちらから指定したルールでデータ型の変換を行いたいケースがあります。
そんな時、SCTにはマッピングルールという、変換のルールを使用者側で設定できる機能が備わっています。
今回は、こちらのマッピングルールの検証も合わせて行っていこうと思います!

検証内容

RDS for Oracle から Aurora PostgreSQLへのテーブル移行
RDS for OracleのNUMBER型はAurora PostgresSQLでは一律numeric型に変換したい。
①マッピングルールを設定せず、自動変換を行う。
②マッピングルールに型変換のルールを設定して、自動変換を行う。

検証準備

今回、SCTの検証を行うにあたり、以下の準備を行いました。
・RDS for Oracle 
 バージョン:19.0.0.0 エディション:Standard Edition Two
・Aurora PostgreSQL
 バージョン:16.6
・EC2(SCTをインストールしたもの)
 OSバージョン:WindowsServer 2022
 SCTバージョン:1.0.676


・それぞれのDBに以下のDDLを実行

■ RDS for Oracle:
--スキーマ
create user sct_test identified by 1234 default tablespace USERS temporary tablespace TEMP profile DEFAULT;

--テーブル
CREATE TABLE sct_test.test_table (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
age NUMBER(3),
birthdate DATE,
status CHAR(1)
);
CREATE TABLE sct_test.test_default (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
age NUMBER(3),
birthdate DATE,
status CHAR(1)
);

■ Aurora PostgreSQL:
--スキーマ
CREATE SCHEMA sct_test;

検証①

まずは「①マッピングルールを設定せず、自動変換を行う」をやっていきます!

File > New project を押下し、新しいプロジェクトを立ち上げます。



Add sourceを押下し、ソースDBを登録



Add targetを押下し、ターゲットDBを登録



Main viewを押下



変換したいスキーマ(今回はSCT_TEST)を選択し、右クリックし Convert schema を押下



ターゲット側(上の画像の右側)から適用したいスキーマを選択し、右クリックApply to databaseを押下



これでターゲット側への適用が完了です。
では、DB内のテーブルを確認し、どのような型変換が行われたか見てみましょう。
RDS for Oracle

・Aurora PostgreSQL側

ID列はNUMBERからnumericへと変換されましたが、AGE列はintegerに変換されてしまいました。

検証②

次に、変換されるデータ型を固定するため、「②マッピングルールに型変換のルールを設定して、自動変換を行う。」の検証を行っていきます!

変換したいスキーマを右クリックし、一番上の Create mapping…を押下



New migration rule を押下



以下のように設定を行う
For → column
Actions → change data type
from → NUMBER
to → NUMERIC
save を押下し、close


ルールが追加されていることが確認できる



ソースDB側の変換したいスキーマを選択し、右クリックし Convert schema を押下



ターゲット側から適用したいスキーマを選択し、右クリックApply to databaseを押下



これで、ターゲットへの適用が完了したのでどのような型変換が行われたか見てみましょう。

RDS for Oracle


・Aurora PostgreSQL側

ID列がNUMBERからnumericへ、age列がNUMBER(3,0)からnumeric(3)へ変換されていることが確認できました。

まとめ

今回は、SCTを使用したオブジェクトの移行を、デフォルトで行うパターンとデータ型の変換に条件を与えるパターンで実施してみました。
完全に自動変換ではなく、使用者側でもコントロールすることができることが確認できました。
今後はよりいろいろなパターンで検証を行いSCTを使いこなせるようになりたいです!


目時雄大(2000年生まれ 2023年入社)
株式会社システムサポート フューチャーイノベーション事業本部 ソリューションサービス事業部所属。
Oracle Database やDBのクラウドマイグレーションを中心とした案件に従事