我使用SSIS(SQL Server 2008 R2中)来转换输入CSV文件到SQL表。 输入文件(实数 - 例如19.54271)五列偶尔有一个坏的值(字符串 - 如“南”),导致程序包失败。
什么是检查这5列的坏值“NAN”最简单的方式,转换到这一点无论是NULL值或已知的坏数值(-9999),修正值写入同一个最终的SQL表?
我有以下的混乱持续至今,并最终决定询问是否有更简单的方法...
我现在的条件逻辑:
我的案例1派生列转换:
注:仍然不知道如果我能在其他派生列合并成一个实例,但因为我的目标只能有一个输入,我怀疑我会需要...
TIA
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
它看起来像使用脚本组件将是最好的方式进行,如果我的逻辑已经不是简单地转换坏值成空了更加复杂。
然而,转换对象的逻辑是相当简单的,所以希望这可以帮助别人:
该软件包(注意,我重定向数据源可疑列行):
条件拆分逻辑:[编辑:我发现,每种情况下的条件需要一个单独的处理路径。 如果您正在评估多个表达式,你可以通过与它们附加在一种情况下这样做|| 运营商。]
派生列逻辑: