我有以下SSIS包:
在我的包中,平面文件源数据提供给条件拆分组件。其中一列是AccountNo
。
平面文件源输出数据类型中的该列为:string [DT_STR]
。
如果AccountNo
是整数,我想检查Constraint Check组件。例如,平面文件源中的列可能是:
12355ss2rt3
并且该输入不是整数。我想将有效的整数传递给约束检查输出。在约束检查组件中,我有:
此表达式使用Type Cast Group和(DT_I8)
条件,但是我收到此错误:
我该如何解决?
答案 0 :(得分:2)
您可以使用派生列来执行此操作。
在我的示例中,输入为:
AccountNo
123
1234
123f
1e23
第1步:尝试将字符串转换为整数
只需使用派生列,尝试强制转换为I8
(DT_I8)AccountNo
第2步:配置错误输出,以捕获错误行</ strong>
成功转换行将转到nomarl流,无法转换为I8的值将重定向到错误流。 一般数据流是这样的(查看屏幕截图): Data flow
要获取错误值,只需从驱动程序列中拖放红色箭头即可。
现在红色流包含无法转换为整数的值 蓝色流动是值成功铸造的。
查看以下截图以获取详细信息:
Screenshot - Step 2 Config error output
第3步:按照您希望的方式处理uncast值
请注意,错误流的输出将为您提供2个有价值的列:
让我们使用这些列来确保“强制转换为整数失败”的错误。
您可以参考msdn文档查找ErrorCode
。
基于ErrorColumn
,您可以确保错误来自AccountNo
列。
答案 1 :(得分:0)
直接使用条件拆分,您将无法执行此操作。
使用派生列/脚本组件检查数据是否为数字
创建派生列isNumeric
表达式:(DT_I4)AccountNo ==(DT_I4)AccountNo? 1:0
现在在条件拆分中使用它。