如何检查ssis中条件拆分组件中的列是否为整数?
How to check if column is integer in conditional split component in ssis?
我有以下 SSIS 包:
在我的包中,平面文件源数据馈送到有条件的拆分组件中。其中一列是 AccountNo
。
平面文件源输出数据类型中的那一列是:string [DT_STR]
.
如果 AccountNo
是整数,我想检查约束检查组件。例如,平面文件源中的那一列可能是这样的:
12355ss2rt3
并且该输入不是整数。我想将一个有效的整数传递给约束检查输出。在约束检查组件中,我有这个:
此表达式使用类型转换组和 (DT_I8)
条件,但出现此错误:
我该如何解决?
直接使用条件拆分将无法做到这一点。
使用派生列/脚本组件检查数据是否为数字
创建派生列 isNumeric
表达式:(DT_I4)账号 == (DT_I4)账号? 1 : 0
现在在条件拆分中使用它。
您可以使用派生列来执行此操作。
在我的例子中,输入是:
AccountNo
123
1234
123f
1e23
第 1 步:尝试将字符串转换为整数
只使用派生列,尝试转换为 I8
(DT_I8)AccountNo
第 2 步:配置错误,捕获错误行
转换成功的行将转到nomarl流,不能转换为I8的值将重定向到错误流。
一般的数据流是这样的(查看截图):
Data flow
要获取错误值,只需从驱动程序列中拖放红色箭头即可。
现在红色流包含无法转换为整数的值
蓝色的流量是成功铸造的价值流量。
查看以下屏幕截图了解详情:
Screenshot - Step 2 Config error output
第 3 步:以您想要的方式处理未转换的值
请注意,错误流的输出将为您提供 2 个有价值的列:
- [错误代码]
- [错误列]
让我们使用这些列来确定来自 "cast to integer fail" 的错误。
你可以参考msdn文档查找ErrorCode
.
基于ErrorColumn
,您可以确定错误是否来自列AccountNo
。
我有以下 SSIS 包:
在我的包中,平面文件源数据馈送到有条件的拆分组件中。其中一列是 AccountNo
。
平面文件源输出数据类型中的那一列是:string [DT_STR]
.
如果 AccountNo
是整数,我想检查约束检查组件。例如,平面文件源中的那一列可能是这样的:
12355ss2rt3
并且该输入不是整数。我想将一个有效的整数传递给约束检查输出。在约束检查组件中,我有这个:
此表达式使用类型转换组和 (DT_I8)
条件,但出现此错误:
我该如何解决?
直接使用条件拆分将无法做到这一点。
使用派生列/脚本组件检查数据是否为数字
创建派生列 isNumeric
表达式:(DT_I4)账号 == (DT_I4)账号? 1 : 0
现在在条件拆分中使用它。
您可以使用派生列来执行此操作。
在我的例子中,输入是:
AccountNo
123
1234
123f
1e23
第 1 步:尝试将字符串转换为整数
只使用派生列,尝试转换为 I8
(DT_I8)AccountNo
第 2 步:配置错误,捕获错误行
转换成功的行将转到nomarl流,不能转换为I8的值将重定向到错误流。 一般的数据流是这样的(查看截图): Data flow
要获取错误值,只需从驱动程序列中拖放红色箭头即可。
现在红色流包含无法转换为整数的值 蓝色的流量是成功铸造的价值流量。
查看以下屏幕截图了解详情:
Screenshot - Step 2 Config error output
第 3 步:以您想要的方式处理未转换的值
请注意,错误流的输出将为您提供 2 个有价值的列:
- [错误代码]
- [错误列]
让我们使用这些列来确定来自 "cast to integer fail" 的错误。
你可以参考msdn文档查找ErrorCode
.
基于ErrorColumn
,您可以确定错误是否来自列AccountNo
。