異種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型として指定されるようになります。

関連したトピックス
- テーブル一括作成やマッピングをカスタマイズ:グローバルスクリプト[Syniti Replicate]
- [DBMoto][スクリプト]カラムを結合・分割したレプリケーション
- 複数のテーブルにあるレコードを1つのテーブルへ統合する際の注意点【リアルタイムレプリケーションツールDBMoto】
- 複数の複製元サーバから1つの複製先サーバへの結合レプリケーションもDBMotoで簡単実現
- [DBMoto]「未マッピング使用」機能によるマッピング外のデータを活用したレプリケーション
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方②:グローバルスクリプト
- レプリケーションの際にnullを特定の値に変換する方法 その2【リアルタイムレプリケーションツールDBMoto】
- [DBMoto]関数を使用してレプリケーション時のデータを変換する方法(VB/C#言語選択、関数適用、ユーザ関数作成、置換関数、一括設定手順)
- [Syniti(DBMoto)][スクリプト] 特定カラムの値が変更となった場合、ターゲットのレコードを削除するサンプルスクリプト
- [Syniti(旧DBMoto)]レコード競合(コンフリクト)発生時のレコード内容を出力する方法

RSSフィードを取得する