SSIS - 转换多列的值设为NULL(SSIS - Convert Multiple Colum

2019-10-17 01:14发布

我使用SSIS(SQL Server 2008 R2中)来转换输入CSV文件到SQL表。 输入文件(实数 - 例如19.54271)五列偶尔有一个坏的值(字符串 - 如“南”),导致程序包失败。

什么是检查这5列的坏值“NAN”最简单的方式,转换到这一点无论是NULL值或已知的坏数值(-9999),修正值写入同一个最终的SQL表?

我有以下的混乱持续至今,并最终决定询问是否有更简单的方法...

我现在的条件逻辑:

我的案例1派生列转换:

注:仍然不知道如果我能在其他派生列合并成一个实例,但因为我的目标只能有一个输入,我怀疑我会需要...

TIA

Answer 1:

SSIS表情会很麻烦,难以阅读的时候是复杂的逻辑或者有多种评估。 在你的情况你会用一堆,单独,很少做任务的清盘。

我想这个捆绑成一个脚本组件。 这样,你可以使用基本的VB或C#功能evaulate如果所有列的正确转换为数字,当他们不分配默认值。 此外,你可以实现一个try / catch方案,并优雅地将错误发送到不同的输出缓冲器。

这里有一个如何使用脚本组件作为转换一些例子:

http://www.bimonkey.com/2009/09/the-script-transformation-part-1-a-simple-transformation/

http://www.sqlis.com/sqlis/post/The-Script-Component-as-a-Transformation.aspx

http://www.codeproject.com/Articles/193855/An-indespensible-SSIS-transformation-component-Scr



Answer 2:

它看起来像使用脚本组件将是最好的方式进行,如果我的逻辑已经不是简单地转换坏值成空了更加复杂。

然而,转换对象的逻辑是相当简单的,所以希望这可以帮助别人:

该软件包(注意,我重定向数据源可疑列行):

条件拆分逻辑:[编辑:我发现,每种情况下的条件需要一个单独的处理路径。 如果您正在评估多个表达式,你可以通过与它们附加在一种情况下这样做|| 运营商。]

派生列逻辑:



文章来源: SSIS - Convert Multiple Column Values To Null