我在XSD文件中丢失了下面定义的一个属性。我试过use="required"
和use="optional"
。
<xs:attributeGroup name="defense">
<xs:attribute name="tlost" use="required" type="xs:decimal"/>
</xs:attributeGroup>
在我试图导入的XML文档中,我将得到一个值,如下所示:
<defense ast="0" category="special_team" tlost="0" int="0"/>
我正在执行一个SSIS包,它接受tlost值并将其插入到sql数据库表中。数据库表中的列具有DECIMAL(28,10)
的数据类型,并允许使用null
。
当我执行包时,前面的值完美地工作,数据被插入。但是,当我在XML文件中得到一个tlost=""
的值时,包会失败,并且不会插入记录。
在数据流路径编辑器中,tlost的数据类型是DT_DECIMAL
。当我检查XML的高级编辑器时,输入和输出属性有一个数据类型,tlost作为十进制[DT_DECIMAL]
。
我搞不懂为什么会失败。我尝试创建派生列并将其转换为(DT_DECIMAL, 10)
数据类型。那不管用。我试图检查一个空值,并将其替换为0(如果为空),这是行不通的。因此,我只是一起忽略了这个列,并且在派生列任务中,我用(DT_DECIMAL, 10)
0替换了tlost列值,只插入了一个0值,忽略了xml文件中的任何内容,作业仍然失败了,出现了以下错误消息:
错误: 0xC020F444在Load摘要表中,XML 1031:错误“输入字符串格式不正确”。在处理"
XML Source.Outputs[defense].Columns[tlost]
“时发生。 错误: 0xC02090FB在Load Play汇总表中,XML 1031:由于错误代码0x80131537发生,"XML“失败,而"XML Source.Outputs[defense].Columns[tlost]
”在"XML Source.Outputs[defense]
“上的错误行处理指定错误失败。指定组件的指定对象上发生错误。 错误: 0xC02092AF在Load摘要表中,XML 1031: XML无法处理XML数据。管道组件已从方法调用返回HRESULT错误代码0xC02090FB。 错误: 0xC0047038在Load Play汇总表中,SSIS.Pipeline: SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。XML上的PrimeOutput方法返回错误代码0xC02092AF。当管道引擎调用PrimeOutput()
时,组件返回一个失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,并提供有关故障的更多信息。
请帮帮忙。为了解决这个问题,我已经用尽我所能想到的一切。我正在处理数百个文件,每次出现这个问题时,我都不能一直修复错误的数据文件。
发布于 2016-05-21 15:30:39
你能试试这个吗?
1-在xsd中将数据类型更改为string,并在加载到表之前处理数据类型转换。2-如果可能的话,通过传递xml生成xsd,然后验证数据类型并相应地使用它.
其余的xsd可以相应地更改..。
下面是我尝试过的屏幕抓取。希望它能帮上忙
]1
https://stackoverflow.com/questions/37336600
复制相似问题