マッピングは、 他のデータベースを含む MapForce によりサポートされるソース コンポーネントからデータベーステーブルにデータを挿入することができます。新規に挿入されたレコードの主キーがどのように作成されるかを柔軟的に構成することができます。例えば、主キーは、データベースにより生成されたマッピングから取得、またはデータベース テーブル内の既存のキーの値に基づき計算することができます。
この例は、新規のレコードを XML ファイルから既存の データベース テーブルに挿入する方法を説明しています。主キーの生成の構成方法についても説明されています。この例は以下のファイルを使用します:
•altova-cmpy.xml — データベースに挿入されるソースデータを含んでいます。
•Altova_Hierarchical.xsd — 上記のインスタンスファイルを検証するために使用されるスキーマです。
•altova.mdb — 更新されるターゲットデータベースです。
全てのファイルは <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\ フォルダー内にあります。 下の説明では、簡素化のために、これらのファイルへの完全なパスは省略されています。
この例のマッピングは、サンプルデータベースファイルを変更します。元のデータベースをバックアップし、下記のステップを開始する前に、新規のコピーを起動することが奨励されます。することが奨励されます。バックアップを作成することにより、元の例が上書きされず、下記と同じ結果を得ることができます。詳細に関しては、次を参照してください:データベースを変更するマッピングの実行。 |
マッピングの目的は、です。 altova.mdb データベースの 「Altova」 テーブル内に、新規のレコードとして Altova-cmpy.xml 内の会社を入力することです。 ソース XML ファイルを開くと、 「Microtech OrgChart」 と呼ばれる会社が1つのみが含まれていることに気がつきます。ですから、 マッピングは、という名前 「Microtech OrgChart」の新規のレコードを 「Altova」 テーブルに追加しなければなりません。 また、 新規の主キーが生成される必要があります。
マッピングの目的を達成するために、以下のステップを行います。
ステップ 1: ソース XML コンポーネントを挿入する
•「挿入」 メニューから、「XML スキーマ/ファイル」をクリックして、Altova_Hierarchical.xsd を参照します。インスタンスファイルを与えるように問われると、Altova-cmpy.xml を参照してください。
ステップ 2: ターゲットデータベースを挿入する
•「挿入」 メニューから、「データベース」をクリックして、 altova.mdb に接続するためにウィザードのステップを行ってください。 (次を参照してください: 例: "altova.mdb" データベースをマッピングに追加する)。
ステップ 3: 接続を描く
•下に表示されるとおりマッピングの接続を描きます。
メモ: | 希望しない接続が自動的に子孫アイテムに作成される場合は、「一致する子を自動的に接続する」が有効化されています。 この場合、最後の アクションを元に戻すには、 メニューオプション 「編集 | 元に戻す」 を選択します。自動接続オプションを無効化するには、「接続 | 一致する子を自動的に接続する」を選択します。 |
ステップ 4: 挿入アクションを構成する
1.ターゲットコンポーネント上に、 アクション: 挿入 ( ) ボタンが表示されていることに注意してください。このボタンは、マッピングからの接続がある各テーブルに表示されます (この場合は、 「Altova」 テーブル)。 このボタンをクリックして、実行されるデータベースアクションの詳細を構成してください (この場合は、入力アクション)。 データベース テーブル アクション ダイアログボックス が表示されます。
2.データベース テーブル アクション ダイアログボックス内で、 「全て挿入」から 「PrimaryKey」 の横の、max() + 1 オプション を選択します。
このリスト内で使用することのできるオプションは以下を意味します:
オプション |
説明 |
マップされた値 |
ソースデータをデータベースフィールドに直接マップすることができ、全てのデータベースフィールドのための通常の設定です。 リレーションを定義することにより、ストアド プロシージャを使用して、キーの値を与えることもできます。次を参照してください:ストアドプロシージャを使用した主キーの生成 。 |
max() + 1 |
データベース内の既存のキーをベースにして、キーの値を生成します。例えば、テーブルに主キー 1、 2、 および 3 を持つ 3 つのレコードが存在する場合、 max() + 1 は 4 になります。
この例では、 「Altova」 テーブルには、 主キー 1 を持つレコードは1つしか存在せず、 max() + 1 は、期待される新規の主キーの値である 2 です。 |
DB-により生成された |
データベースは、キーの値を生成するために「Identity 関数」 を使用します。 |
「Name」の横のオプション マップされた値はこの列がマッピングから値を直接取得することを示しています。テーブル アクション ダイアログボックスで使用することのできる他のオプションについての説明は、次を参照してください:データベーステーブルアクション設定。
ステップ 5: マッピングをプレビューし、データベースを更新する
マッピングをプレビューするために「出力」タブをクリックします。データベースに対して実行されるアクションを含む、 SQL スクリプトが生成されます。スクリプトは、まだ、データベースを変更していません。 これはまだプレビューです。
データベースに対してスクリプトを実行するには以下を行います:
•「出力」 メニューから、「SQL-スクリプトの実行」をクリックします。
メモ: | MapForce から直接 SQL スクリプトを実行することは、データベースを更新する方法のひとつです。次も参照してください: データベースを変更するマッピングの実行。 |
結果を確認するには、DatabaseSpy または Access 内で altova.mdb データベース を開きます。新規の「Microtech OrgChart」 レコードが 「Altova」 テーブルに 新規の主キー 2 と共に、追加されていることに注意してください。 このレコードためのデータは、入力 XML インスタンスに基づいたものです。
データベース テーブルにデータを挿入するマッピングの作成が完了しました。現在の テーブルと依存する子テーブルの両方にデータを挿入する例に関しては、次を参照してください:データを複数の関連するテーブルに挿入する。