異種DB間レプリケーションツールDBMotoは、レプリケーション先(ターゲット)へのテーブル作成機能も搭載しています。デフォルトでは、レプリケーション元テーブルのデータ型から、ターゲットDBの種類にあった最適なデータ型を自動的に判別し、テーブルが作成されます。この際、個々のテーブル作成時のGUI画面から、任意のデータ型に手動で変更することも可能です。

ただ、数百とテーブルがある場合、個々のテーブル毎に任意のデータ型を指定するのは手間がかかる作業となってしまいます。デフォルトで指定されるデータ型を変更したい場合は、グローバルスクリプトのCreateTableRuleメソッドをご活用ください。
例えば、レプリケーション元テーブルのデータ型がchar型列である場合に、ターゲットではvarchar型としてテーブル作成を行いたい場合は、下記のような手順で設定します。
■1 : 下記スクリプトをグローバルスクリプトにコピー&ペーストし、テーブル作成時のカスタムルールを作成します。
using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using DBMotoPublic;
using DBMotoScript;
namespace DBRS
{
public class GlobalScript : IGlobalScript
{
}
public class MappingRule : IMappingRule
{
}
public class CreateTableRule : ICreateTableRule
{
[CreateTableRuleAttribute("Create Table Data Convert",
"Convert columns type from char to varchar")]
public bool MyCustomAuditTable (List<ColumnClass> aTargetFields)
{
foreach(ColumnClass colClass in aTargetFields)
{
if (colClass.TypeName.ToLower() == "char")
colClass.TypeName = "varchar";
}
return true;
}
}
public class GlobalEvents : IGlobalEvents
{
}
}
■2: ターゲットDBの接続プロパティを開き、[テーブルカスタムルールを作成]の設定から、作成したカスタムルールを指定します。

■3: char型のテーブルをターゲットDBに作成しようとすると、デフォルトでvarchar型として指定されるようになります。


RSSフィードを取得する