我目前正在尝试通过 xml(在 TemplateParser 中调用 inputFiles)将大量数据插入到我的存储库中。但是,当单个记录引发错误(例如键约束)时,将不再处理任何记录。我知道清理数据以免插入错误的行会很好,但是因为我无法在测试环境中始终如一地控制我们的数据子集,所以我不能保证外部约束引用的表将具有一致的数据.
如果我将整个内容包装在事务中,则不会插入任何记录,如果我用 import-items 包装它,则由于表上的空约束(import-items 尝试插入部分记录)而失败。将每个元素包装在它自己的事务中不会捕获错误,它将每一行插入到坏行,但之后什么都没有。
在将数据导入存储库时,是否有另一种方法可以在错误情况下恢复?或者在插入之前检查 gsa 模板中的约束的方法?
参考文件
<?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>