現在、xml を介して大量のデータをリポジトリに挿入しようとしています (TemplateParser 内で inputFiles を呼び出します)。ただし、単一のレコードがキー制約などのエラーをスローすると、それ以上のレコードは処理されません。不正な行が挿入されないようにデータを消去するのが良いことは理解していますが、テスト環境でデータのサブセットを一貫して制御できないため、外部制約によって参照されるテーブルに一貫したデータがあることを保証できません.
コンテンツ全体をトランザクションでラップすると、レコードが挿入されません。インポート項目でラップすると、テーブルの null 制約のために失敗します (インポート項目は部分的なレコードを挿入しようとします)。各要素を独自のトランザクションでラップしてもエラーはトラップされず、各行が不良行まで挿入されますが、その後は何も挿入されません。
データをリポジトリにインポートする際に、エラー シナリオでの再開を可能にする別の方法はありますか? または、挿入する前に gsa-template 内の制約をチェックする方法はありますか?
参考ファイル
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE gsa-template SYSTEM "dynamosystemresource:/atg/dtds/gsa/gsa_1.0.dtd">
<gsa-template>
<transaction>
<add-item item-descriptor="vendorSku">
<set-property name="skuItem"><![CDATA[0065-OC-OS]]></set-property>
<set-property name="vendorSkuId"><![CDATA[853-6520]]></set-property>
<set-property name="vendorItem"><![CDATA[781]]></set-property>
</add-item>
<add-item item-descriptor="vendorSku">
<set-property name="skuItem"><![CDATA[0189-CRGONET-ONSI]]></set-property>
<set-property name="vendorSkuId"><![CDATA[8007146]]></set-property>
<set-property name="vendorItem"><![CDATA[76]]></set-property>
</add-item>
etc..
</gsa-template>