转换SSIS列中的数据

Converting data in column in SSIS

我正在编写一个 SSIS 包以将数据从 .csv 加载到数据库中。

csv 文件中有一列应该有一个计数,但记录有时有文本,所以我不能只将数据作为整数加载。它看起来像这样:

我希望数据以整数而不是字符串的形式到达数据库目的地。我希望转换将任何文本更改为 1,将任何空白值更改为 1,并保持所有其他数字不变。

到目前为止,我的尝试包括使用派生列功能,我似乎无法获得正确的表达式,并创建一个临时 table 到 运行 sql 查询数据,一直断我的数据流

您可以遵循三种方法。

(1) 使用派生列

您应该使用以下表达式添加派生列以检查值是否为数字:

(DT_I4)[count] == (DT_I4)[count] ? [count] : 1

然后在派生列编辑器中,转到错误输出配置并将错误处理事件设置为Ignore failure

现在添加另一个派生列以将空值替换为 1 :

REPLACENULL([count_derivedcolumn],1)

您可以参考以下文章获取step-by-step指南:

(2) 使用脚本组件

如果您了解 C# 或 Visual Basic.NET,您可以添加一个脚本组件来检查值是否为数字并将空值和字符串值替换为 1

(3) 更新SQL

中的数据

您可以将初始形式的数据暂存到 SQL 数据库中,并使用更新查询将空值和字符串值替换为 1,如下所示:

UPDATE [staging_table]
SET [count] = 1
WHERE [count] IS NULL or ISNUMERIC([count]) = 0