我目前正嘗試通過xml(在TemplateParser內調用inputFiles)將大量數據插入到我的存儲庫中。但是,如果單個記錄引發錯誤(如鍵約束),則不會處理更多記錄。我知道清理這些數據是不錯的,因爲壞行不會被插入,但是因爲我無法始終如一地控制測試環境中的數據子集,所以我無法保證由外部約束引用的表將具有一致的數據。通過gsa模板插入數據atg sql與錯誤恢復
如果我將整個內容包裝在一個事務中,那麼沒有記錄被插入,如果我用包含import-items的記錄包裝它,它會因爲表上的null約束而失敗(import-items嘗試插入部分記錄)。在它自己的事務中包裝每個元素並不會捕獲錯誤,它會將每一行插入到壞行中,但沒有任何事。
有沒有另一種方式來允許在將數據導入資源庫時發生錯誤恢復?或者在插入之前檢查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>