在使用 SSIS“数据转换组件”将字符串转换为十进制数据类型时,我遇到了一个奇怪的问题。我使用 SSIS 2016。
源数据输入具有混合数据类型的值 - 字符串、整数、十进制,并在平面文件源中定义为 varchar。预期的目标数据类型是数字。当从字符串到十进制的显式类型转换发生时,我们希望字母数字值被错误表拒绝,并且只有数字值通过。相反,我们看到一些字母数字值脱落了值中的字符并成功通过而没有错误。
示例:值“3,5”转换为 35 值“11+”转换为 11
我们无法控制源数据,也无法在将数据传递到数据转换组件之前替换 char 数据。我们已经尝试了以下步骤作为解决方法,并且它已经奏效。IE,
- 从 DT_STR 到 DT_NUMERIC 的第一次数据转换
- 捕获上述转换失败的错误行
- 从 DT_NUMERIC 到 DT_DECIMAL 的第二次数据转换
但是由于源数据不可靠,我们可能不得不在存在数字字段(int 类型和 deicmals)的地方应用这种解决方法,这不是一个友好的解决方案。因此,请与大家核对以了解是否有任何人尝试过更简单、更好的解决方案。