異種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の値のレコードのみスキップする想定通りのレプリケーションが実施できました。

関連したトピックス
- [DBMoto][スクリプト]条件付きレプリケーションを行うサンプルVBスクリプト
- [Syniti(DBMoto)][スクリプト] 特定カラムの値が変更となった場合、ターゲットのレコードを削除するサンプルスクリプト
- 複数のテーブルにあるレコードを1つのテーブルへ統合する際の注意点【リアルタイムレプリケーションツールDBMoto】
- [Syniti(旧DBMoto)]レコード競合(コンフリクト)発生時のレコード内容を出力する方法
- 複数の複製元サーバから1つの複製先サーバへの結合レプリケーションもDBMotoで簡単実現
- 2つのソーステーブルからターゲットの一つのレコードにレプリケーション
- 外部DLL(COM)の使用方法【リアルタイムレプリケーションツールDBMoto】
- ミラーリングおいてのレコード数を確認の方法【リアルタイムレプリケーションツールDBMoto】
- [DBMoto]関数を使用してレプリケーション時のデータを変換する方法(VB/C#言語選択、関数適用、ユーザ関数作成、置換関数、一括設定手順)
- レプリケーションの際にnullを特定の値に変換する方法 その2【リアルタイムレプリケーションツールDBMoto】

RSSフィードを取得する