任意のデータ型でターゲットテーブル作成[DBMoto]


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

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください