異種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で簡単実現

RSSフィードを取得する