2012-07-16 65 views
1

我正在使用SSIS(SQL Server 2008 R2)将输入CSV文件转换为SQL表。输入文件中的五列(实数 - 例如19.54271)偶尔会有一个错误值(字符串 - 例如“NAN”),导致程序包失败。SSIS - 将多列值转换为空

检查这5列的坏值“NAN”,将其转换为NULL值或已知错误数字(-9999),并将校正后的值写入相同的最终SQL表中的最简单方法是什么?

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

enter image description here

我现在的条件逻辑:
enter image description here

我的案例1派生列转换:
enter image description here

注意:仍然不确定是否我可以在其他派生列合并成一个实例,但因为我的目标只能有一个输入,我怀疑我需要......

TIA

回答

1

它看起来像使用脚本组件将是最好的方式如果我的逻辑比简单地将坏值转换为空值更加复杂,请继续。

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

包(注意,我重定向数据源中的犯罪嫌疑人列行):
SSIS package

条件拆分逻辑: [编辑:我发现,每个案件条件需要一个单独的处理路径。如果您正在评估多个表达式,您可以在一个案例中添加||来附加它们操作者] Case Condition Logic

派生列逻辑: derived column logic

2

SSIS表情会很麻烦,难以阅读时逻辑复杂或者是否有多个评估。在你的情况下,你将要结束一大堆任务,这些任务很少。

我会把它捆绑到一个脚本组件中。这样,您可以使用基本的VB或C#函数来判断所有列是否正确转换为数字,并在不存在时指定默认值。此外,您可以实现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

+0

感谢。我会看看这些。 – MTAdmin 2012-07-17 14:35:49