如何在ssis的条件拆分组件中检查列是否为整数?

如何在ssis的条件拆分组件中检查列是否为整数?,ssis,ssis-2012,Ssis,Ssis 2012,我有以下SSIS包: 在我的包中,平面文件源数据馈送到条件拆分组件中。其中一列是AccountNo。 平面文件源输出数据类型中的列是:string[DT\u STR] 如果AccountNo是整数,我想检查约束检查组件。例如,平面文件源中的列可能是: 12355ss2rt3 输入不是整数。我想向约束检查输出传递一个有效的整数。在约束检查组件中,我有以下内容: 此表达式使用类型转换组和(DT_I8)条件,但我得到以下错误: 如何解决此问题?直接使用条件拆分您将无法执行此操作 使用派生列/脚

我有以下SSIS包:

在我的包中,平面文件源数据馈送到条件拆分组件中。其中一列是
AccountNo
。 平面文件源输出数据类型中的列是:
string[DT\u STR]

如果
AccountNo
是整数,我想检查约束检查组件。例如,平面文件源中的列可能是:

12355ss2rt3
输入不是整数。我想向约束检查输出传递一个有效的整数。在约束检查组件中,我有以下内容:

此表达式使用类型转换组和
(DT_I8)
条件,但我得到以下错误:


如何解决此问题?

直接使用条件拆分您将无法执行此操作

使用派生列/脚本组件检查数据是否为数字

创建派生列isNumeric

表达式:(DT_I4)AccountNo==(DT_I4)AccountNo?1:0


现在在条件拆分中使用此选项。

直接使用条件拆分将无法执行此操作

使用派生列/脚本组件检查数据是否为数字

创建派生列isNumeric

表达式:(DT_I4)AccountNo==(DT_I4)AccountNo?1:0


现在在条件拆分中使用它。

您可以使用派生列来完成此操作

在我的示例中,输入为:

AccountNo
123
1234
123f
1e23
步骤1:尝试将字符串强制转换为整数

只需使用派生列,尝试转换为I8

(DT_I8)账号

步骤2:配置错误输出,以捕获错误行

成功转换行将转到nomarl流,无法转换到I8的值将重定向到错误流。 一般数据流如下所示(查看屏幕截图):

要获取错误值,只需从驱动程序列拖放红色箭头

现在,红色流包含无法转换为整数的值 蓝色流程是具有成功铸造价值的流程

查看以下屏幕截图以了解详细信息:

第3步:以您想要的方式处理未广播的值

请注意,错误流的输出将为您提供两个有价值的列:

  • [错误代码]
  • [错误栏]
让我们使用这些列来确保“转换为整数失败”的错误

您可以参考msdn文档查找
ErrorCode


基于
ErrorColumn
,您可以确保错误是否来自列
AccountNo

您可以使用派生列来执行此操作

在我的示例中,输入为:

AccountNo
123
1234
123f
1e23
步骤1:尝试将字符串强制转换为整数

只需使用派生列,尝试转换为I8

(DT_I8)账号

步骤2:配置错误输出,以捕获错误行

成功转换行将转到nomarl流,无法转换到I8的值将重定向到错误流。 一般数据流如下所示(查看屏幕截图):

要获取错误值,只需从驱动程序列拖放红色箭头

现在,红色流包含无法转换为整数的值 蓝色流程是具有成功铸造价值的流程

查看以下屏幕截图以了解详细信息:

第3步:以您想要的方式处理未广播的值

请注意,错误流的输出将为您提供两个有价值的列:

  • [错误代码]
  • [错误栏]
让我们使用这些列来确保“转换为整数失败”的错误

您可以参考msdn文档查找
ErrorCode

基于
ErrorColumn
,您可以确保错误是否来自列
AccountNo