異種DB間でレコードデータを連携できるDBMoto。スクリプトを使用して条件付きレプリケーションを実施できる機能も搭載されております。
DBMotoではマッピング対象以外のカラムもスクリプトで使用できる「未マッピング使用」という機能も搭載しております。レプリケーション対象ではないが、フィルタリングするデータとしては使用したい時などに活用できます。
●設定例
以下のようなマッピング設定とします。左側ソーステーブルの「C2」はターゲットテーブルにはないフィールドであり、マッピング対象外となっています。
ソーステーブルには適当な2件のレコードが入っており、ターゲットテーブルは空データです。
そしてレプリケーションスクリプトに下記のような「C2」の値が1の場合、レプリケーションをスキップするスクリプトを設定します。
Imports System Imports System.Data Imports Microsoft.VisualBasic Imports DBMotoPublic Imports DBMotoScript Imports DBRS.GlobalScript Namespace DBRS Public Class ReplicationScript : Inherits IReplicationScript Public Overrides Sub Record_onAfterMapping(recSource As IRecord, recTarget As IRecord, ByRef AbortRecord As Boolean, ByRef DisableReplication As Boolean) 'C2が1のレコードはスキップ If recSource.GetValueAfter("C2") = "1" Then AbortRecord=True End If End Sub End Class End Namespace
通常ですとマッピング対象外の「C2」のデータを取得できずレプリケーションが実施できません。
マッピング設定画面からソーステーブルの「C2」フィールドを右クリックし、「未マッピング使用」を選択してみます。
「C2」のデータをスクリプトで使用できるため、1の値のレコードのみスキップする想定通りのレプリケーションが実施できました。
関連したトピックス
- 外部DLL(COM)の使用方法【リアルタイムレプリケーションツールDBMoto】
- [Syniti(DBMoto)][スクリプト] 特定カラムの値が変更となった場合、ターゲットのレコードを削除するサンプルスクリプト
- [DBMoto][スクリプト]条件付きレプリケーションを行うサンプルVBスクリプト
- 2つのソーステーブルからターゲットの一つのレコードにレプリケーション
- ミラーリングおいてのレコード数を確認の方法【リアルタイムレプリケーションツールDBMoto】
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方④:レプリケーションスクリプト
- [Syniti(旧DBMoto)]レコード競合(コンフリクト)発生時のレコード内容を出力する方法
- ・レプリケーションの所要時間を計測する手法【リアルタイムレプリケーションツールDBMoto】
- 複数のテーブルにあるレコードを1つのテーブルへ統合する際の注意点【リアルタイムレプリケーションツールDBMoto】
- 複数の複製元サーバから1つの複製先サーバへの結合レプリケーションもDBMotoで簡単実現