XML Models
DB2 for IBM i コネクタは、CData Arc 内で DB2 for IBM i のテーブルを XML としてモデル化します。モデル化は次の構造に従います。- 親要素は、挿入先のテーブルを識別します。
- 各子要素は、対象テーブルのカラムに対応します。
</> Code をクリックすると確認できます。次の XML は、XML 要素 <Account> としてモデル化された Account という名前のテーブルの簡略化されたモデル例です。
Id、account_c、AccountNumber、AccountSource は Account テーブルのカラムです。コネクタがこの構造に一致する XML ファイルを処理すると、その XML の値が自動的に Account テーブルに挿入されます。コネクタが Account テーブルをクエリすると、この構造に一致する XML を出力します。
Batching Input
Batching Output
Child Tables
Child Table XML
親テーブルと子テーブルに挿入する場合、入力マッピングの XML 構造は多層的になります。次の XML スニペットは、外部キーで関連付けられた2つのテーブルの入力マッピング例です。Account が親テーブルで、AccountPartner が子テーブルです。DB2 for IBM i コネクタがこの構造に一致する入力 XML ファイルを処理すると、両方のテーブルを更新し、2つのレコードを関連付けるキーが同一になるようにします。
Using the ref Attribute
子テーブルの一部のカラムには ref タグが付けられています。このタグは、これらのカラムが親テーブルの主キーに対応していることを示します。コネクタは、親テーブルへの挿入を行った後、子テーブルへの挿入を行う前に、たった今挿入したレコードの主キーを親テーブルにクエリします。コネクタは、子テーブルに挿入する際にこの値を使用します。 これは、親テーブルの主キーが DB2 for IBM i によって生成される場合に便利です。この場合、このカラムは入力 XML として渡されないため、コネクタは親テーブルにレコードを挿入するまでそのカラムの値を知ることができません。 XML モデルにおいて、ref 属性は、カラムが後で参照できること、またはカラムの値がマッピング内の別のカラムから読み取られるべきことを示します。DB2 for IBM i によって生成されるカラムの値を参照するには、カラム要素に予約値 LAST_INSERT_ID を設定した ref 属性を含める必要があります。
ref 要素に該当するカラムの名前を設定します。
ref 構文は、挿入後に親テーブルから id を取得し、取得した値を子テーブルの id カラムとして使用するようコネクタに指示します。
Selecting From Child Tables
Only Process New or Changed Records
Using a Last Modified Column
Using a Custom Column
Pre-Processing and Post-Processing Queries
In Upsert Mappings
Upsert マッピングでは、テーブルにすべてのレコードがアップサートされる前または後に自動的に実行されるクエリを発行できます。 この機能を設定するには、まず Upsert Configuration ペインで</> Code をクリックします。

requireInput:falseに設定します。この属性値は、入力ファイル内に一致する入力要素がなくてもクエリを発行するようコネクタに指示します。insertQuery: UPSERT クエリの前または後に実行したいクエリを格納します。table(任意): 追加クエリの対象にしたいテーブルの名前を設定します。(以下の例では、テーブル名は updateTable です。)マッピングのルートレベル、つまり<Items>要素の子としてクエリを発行する場合、この属性は必要ありません。別のテーブルの子としてクエリを発行する場合は、table 属性を設定することで、そのクエリがそのテーブルのカラムと区別されるようになります。
<runFirst> 要素が、テーブルへの UPSERT リクエストの前にクエリ EXEC [dbo.FlushTemp] を実行します。
<runLast> 要素が、テーブルへのすべての UPSERT リクエストが完了した後にクエリ EXEC [dbo].[CommitTemp] を実行します。
runFirst および runLast はプレースホルダです。要件に合わせて変更できます。
Upsert マッピングにおける前処理クエリおよび後処理クエリは、クエリ内にハードコードされていない入力要素を受け付けず、また出力データを生成しません。
In Select Mappings
Select マッピングでは、対象テーブルへのクエリ発行の前後に自動的に実行されるクエリを発行できます。この機能を設定するには、まず Select Configuration ペインで</> Code をクリックします。

outputResult:falseに設定します。この属性値は、クエリの結果として出力ファイルにデータを返さないようコネクタに指示します。selectQuery: SELECT クエリの前または後に実行したいクエリを格納します。table(任意): 追加クエリの対象にしたいテーブルの名前を設定します。(以下の例では、テーブル名は selectTable です。)マッピングのルートレベル、つまり<Items>要素の子としてクエリを発行する場合、この属性は必要ありません。別のテーブルの子としてクエリを発行する場合は、table 属性を設定することで、そのクエリがそのテーブルのカラムと区別されるようになります。
<runFirst> 要素が、テーブルに対して SELECT クエリが発行される前にクエリ EXEC [dbo].[prepTable] を実行します。
<runLast> 要素が、テーブルに対して SELECT クエリおよびすべての子クエリが発行された後にクエリ EXEC [dbo].[cleanTable] を実行します。
runFirst および runLast はプレースホルダです。要件に合わせて変更できます。
Select マッピングにおける前処理クエリおよび後処理クエリは、クエリ内にハードコードされていない入力要素を受け付けません。
XML Attributes
Table Attributes
allColumns
insertQuery
outputResult
processChangesOnly
requireInput
selectQuery
table
upsertQuery
Column Attributes
aggregate
column
id
Select マッピングでは、この属性によってカラムの値に Id マーカーが付与され、後で子クエリ内から${#ID} という構文で参照できるようになります。これは、複数のテーブルに同名のカラムが存在し選択時にあいまいさが生じるような場面で、カラムの値を子クエリで使用したい場合に便利です。