[DBMoto]「未マッピング使用」機能によるマッピング外のデータを活用したレプリケーション


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

関連したトピックス

コメントを残す

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

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