2013-02-27 109 views
1

我从excel导入数据到sql server数据库。在导入过程中,我必须验证日期列。验证和校正逻辑已经在sql server udf中建立。如果我将日期和其他列的其他列传递给udf,它会给我一个有效的日期。SSIS - 使用sql或udf验证列

udf中的逻辑非常复杂,我不想在SSIS中再次维护它。 UDF不只是做一个查询。不仅如此。

有什么办法让我使用sql或udf epxressions来派生新的列?

由于提前, rkgSSIS

回答

1

你要找的组件是OLE DB Command Transformation。对于通过组件的每一行,它都会使用您提供的任何内容调用数据库。

在你的情况,你会看像

SELECT dbo.MyUdf(?, ?, ?) AS IsGood 

,你会被他们0基于序位线了各列的?

+0

用Excel数据填充临时表,然后针对不同数据流任务中的临时数据运行UDF,与“OLE DB命令”相比性能会更好吗? – 2013-02-27 19:41:06

+0

@siva这可能会引起一个有趣的博客文章,但我认为由于标量UDF的逐行本质,用户已经遭受了痛苦。我不认为通过调用10k次而不是通过一次传球评估10k次来增加这种痛苦会使性能发挥作用。 – billinkc 2013-02-27 20:06:35

+2

@billinkc在这种情况下使用OLE DB命令将意味着额外的10k网络跳数。 **那**会是性能杀手。 – 2013-02-27 20:13:19