如何检查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