入力されたレコードセットとRDBのテーブルに存在する全レコードを比較して、差分のあったレコードに差分情報のフィールドを追加してストリームに出力します。
また、差分のあったレコードを入力されたレコードセットの内容でRDBのテーブルに対して更新を行うこともできます。
入力 | フォーマット | Record |
---|---|---|
接続数 | 1 | |
説明 |
入力ストリームのフィールド定義を専用の設定画面で行います。 このフィールド定義は直前に連結したマッパーの出力ストリームのフィールド定義にコピーされ、そこに対して値のマッピングを行います。そのため、このコンポーネントに連結できるコンポーネントはマッパーのみとなっています。 |
|
出力 | フォーマット | Record |
説明 | 出力ストリームのフィールド定義は、入力のフィールド定義の最後に「差分種別」フィールドが追加されたレコードを出力します。詳細は下記トピック「差分種別フィールドについて」を参照してください。 |
名前 | プロパティ型 | マッピング | 説明 | ||||||
---|---|---|---|---|---|---|---|---|---|
コネクション名 | connection | - | 接続先のRDBを指定します。 コネクションペインまたは管理コンソールにて作成されたRDB接続名を選択します。 | ||||||
テーブル名 | string | - | 更新対象のテーブル名を指定します。 コンポーネントをダブルクリックすると、テーブル名とフィールドの設定画面が表示されます。ここでフィールド定義を行うことによってテーブル名が自動で設定されます。設定については、下記トピック「テーブル名とフィールドの設定」を参照してください。 | ||||||
処理件数 | int | 出力 | 実際に更新されたレコード件数が取得できます。 | ||||||
実行する処理 | choice | - |
実行する操作を指定します。 各モードごとの動作については、下記トピック「実行する処理ごとの動作」を参照してください。 |
||||||
条件式 | string | - |
指定されたテーブルのレコード範囲を絞る条件式を指定します。 条件式の指定方法はSQLのWHERE句の指定方法そのままです。(ただしここでの指定には「WHERE」句は必要ありません。) 条件式の中にはSQLパラメーターを埋め込むことができます。 |
||||||
入力以外の差分を含める | boolean | - |
入力ストリームのレコードとキー項目が一致しなかったRDBのレコードの差分情報を出力するかどうか選択します。
|
||||||
RDBから削除する | boolean | - |
入力ストリームのレコードとキー項目が一致しなかったRDBのレコードをテーブルから削除するか選択します。削除するには、入力以外の差分を含める を「はい」、実行する処理 を「更新する」処理に指定します。両方のプロパティが正しく指定されていない場合、本プロパティで「はい」を指定しても削除されません。
|
||||||
Nullと空文字を同一視する | boolean | - |
比較時にNullと空文字を等しいと判定するかどうかを指定します。
|
||||||
入力 | category | - | 入力ストリームのフィールド定義を行います。設定については、下記トピック「テーブル名とフィールドの設定」を参照してください。項目「処理種別」の詳細は、下記トピック「処理種別フィールドについて」を参照してください。 | ||||||
SQLパラメーター | category | 入力&出力 |
パラメーター名、入出力種別、データ型、値のセットで定義します。 値は、前に連結したマッパーからマッピングすることが可能です。また、入出力種別で出力するパラメーターは直後に連結したマッパーから参照することもできます。詳細については、下記トピック「SQLパラメーターの使い方」を参照してください。 |
コミット | RDBMSをコミットします。 |
---|---|
ロールバック | RDBMSをロールバックします。 |
タイプ | パラメーター | エラー処理フロー へのストリーム | エラー コード | 説明 |
---|---|---|---|---|
汎用 | なし | コンポーネントの入力ストリーム | なし | コネクション名 に指定したコネクションが見つからない場合 |
データベースベンダー固有の例外コード | テーブルまたはフィールドが見つからない場合 | |||
データベースベンダー固有の例外コード | SQLの実行に失敗した場合 | |||
なし | キーが指定されていない場合 | |||
接続エラー | なし | コンポーネントの入力ストリーム | なし | DBMSとの接続に失敗した場合 |
本コンポーネントで行う処理を決定します。 入力レコードでRDBを更新するかどうかと出力データを選択します。 出力データとは、出力ストリームの差分種別フィールドが'Update'で出力されるレコードの内容を、入力ストリームのレコードのデータにするかRDBのレコードのデータにするかを選択します。
入力ストリームのレコードデータを出力します。 RDBの更新は行いません。
RDBのレコードデータを出力します。 RDBの更新は行いません。
入力ストリームのレコードデータを出力します。 またRDBの更新も行います。
RDBのレコードデータを出力します。 またRDBの更新も行います。
入力のフィールド定義の最後に追加される差分種別フィールドには以下の文字列が返されます。
戻り値 | 説明 |
---|---|
Update | 同一のキーを持つ入力ストリームのレコードとRDBのレコードに差分があった場合 |
Insert | あるキーを持つレコードが、入力ストリームには存在したがRDBには存在しなかった場合 |
Delete | あるキーを持つレコードが、RDBには存在したが入力ストリームには存在しなかった場合 |
本コンポーネントで取得できる差分情報の例を以下に示します。
入力レコード: aaa,あああ bbb,いいい ccc,ううう
RDBのレコード: aaa,あああ bbb,イイイ ddd,えええ
差分情報として一番最後に差分種別フィールドが追加されて出力されます。
・実行する処理 プロパティでの出力データが「入力」の場合
bbb,いいい,Update ccc,ううう,Insert ddd,えええ,Delete
・実行する処理 プロパティでの出力データが「RDB」の場合
bbb,イイイ,Update ccc,ううう,Insert ddd,えええ,Delete
・実行する処理 プロパティでの出力データが「入力」の場合
bbb,いいい,Update ccc,ううう,Insert
・実行する処理 プロパティでの出力データが「RDB」の場合
bbb,イイイ,Update ccc,ううう,Insert
設定値に関する詳細は以下のとおりです。
値 | 説明 |
---|---|
キーにする | 入力レコードとRDBにあるレコードを一致させるキーとして扱います。 |
比較する | 入力レコードとRDBにあるレコードの差分を取る際の比較対象として扱われます。 |
比較しない | キーにも比較の処理にも使用されません。RDBのレコードを更新する場合に、入力レコードの値でRDBを更新します。 |
データ型がDatetimeのフィールドに"比較する"を選択した場合、うまく比較できない場合があります。
キーにするフィールドにはPRIMARY Key制約やUNIQUE Key制約を設定しておく必要があります。 キーにするフィールドにこれらの制約を設定しなくても動作しますが、 キーにするフィールド以外のフィールドにこれらの制約が設定されていると、設定する値によってはUpdateやInsert時に制約違反が発生する可能性があります。
RDBMSのテーブルに対して処理するテーブルとフィールドの選択は、専用のダイアログボックスから行います。
ダイアログボックスから選択すると、インスペクタの入力タブに処理対象フィールドとして表示されます。
処理種別を指定するには、専用のダイアログボックスでフィールドを選択してから、インスペクタの入力タブでキーとなるフィールドの「処理種別」項目を設定します。
表示名に値を設定することでテーブル上の実際のカラム名とストリーム定義で使用するフィールド名を別にすることができます。
定義画面を表示するには、以下のいずれかの操作を行います。
定義画面を表示すると(1)にテーブルの一覧が表示されます。テーブルを指定すると、(3)(5)に情報が表示されます。
テーブルを指定すると、(5)にテーブルのフィールド一覧が表示されます。初期状態では、すべてのフィールドが処理対象になるように(4)のチェックボックスがオンになっています。
フィールドを選択して「OK」をクリックすると、インスペクタの入力タブにフィールド一覧が表示されます。
SQLパラメーターを使うと、実行時の条件を動的に変更することができます。条件式 に記述する際に、SQLパラメーターで定義した任意の名前のパラメーター名を含む条件式を記述します。本コンポーネントの前にマッパーを配置し、定義したパラメーターにマッピングすることにより、実行時の動的な文字列を含む条件で比較を行うことができます。
パラメーターには、以下の2つの書式があります。
SQLパラメーター書式は、条件式中のフィールド値となる箇所で使います。パラメーターの定義では、フィールドに対応したデータ型を指定します。条件式で、置き換えたい文字列を使用する部分に「?パラメーター?」のようにパラメーター名を?で囲んで記述します。
置換文字列書式は、条件式中の任意の箇所で使います。パラメーターの定義では、データ型にStringを指定します。条件式で、置き換えたい文字列を使用する部分に「$パラメーター名$」のようにパラメーター名を$で囲んで記述します。
以下の手順で記述します。
条件式 プロパティに「ID <= ?p1? AND ID >= ?p2?」という条件式が指定され、
SQLパラメーター プロパティに「p1=1000」、「p2=2000」が指定されている場合、
IDが1000以上、2000以下のレコードが本コンポーネントでの比較対象になります。