異種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]
- レプリケーションの際にnullを特定の値に変換する方法 その2【リアルタイムレプリケーションツールDBMoto】
- [DBMoto]関数を使用してレプリケーション時のデータを変換する方法(VB/C#言語選択、関数適用、ユーザ関数作成、置換関数、一括設定手順)
- [DBMoto][スクリプト]カラムを結合・分割したレプリケーション
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方⑤:フィールドマッピング関数の書き方
- ジュリアンデートのレプリケーション【リアルタイムレプリケーションツールDBMoto】
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方②:グローバルスクリプト
- [DBMoto]暗号化したデータを復号し保存するデータ連携方法
- APIからレプリケーション結果の検証やデータ整合を実行するサンプルスクリプト[C#] [Syniti DR (DBMoto)]
- [DBMoto]データを暗号化し保存するデータベース移行方法