SSIS脚本组件-获取数据流中的原始行数据

时间:2019-06-18 10:15:15

标签: sql-server ssis ssis-2012 sql-server-2017

我正在SSIS中处理平面文件,其中一项要求是,如果给定的行包含不正确数量的定界符,则使该行失败,但继续处理该文件。

我的计划是将行加载到SQL Server的单个列中,但是在加载期间,我想在数据流期间测试每一行,以查看它是否具有正确数量的定界符,并添加派生列值来存储比较结果。

我想我可以使用脚本任务组件来做到这一点,但是我想知道是否有人以前做过,什么是最好的方法?如果要使用脚本任务组件,该如何在脚本任务内部访问带有分隔符的原始行?

解决方案:

我最终得到了Holder答案的修改版本,因为我发现TOKENCOUNT()不会为此SO answer计算空值。如果两个定界符之间没有一个值分隔,则将导致计数错误(至少出于我的目的)。

我改用以下表达式:

LEN(EntireRow) - LEN(REPLACE(EntireRow, "|", ""))

这将导致该行中正确的分隔符计数,而不管给定字段中是否有值。

1 个答案:

答案 0 :(得分:2)

我的建议是使用衍生列进行测试

然后添加有条件拆分以确定是否要插入行。

类似这样的东西:

Dataflow

使用“派生列”框中的TokenCount函数来获取像这样的列数:TOKENCOUNT(EntireRow,“ |”)

Derrived column