我正在SSIS中处理平面文件,其中一项要求是,如果给定的行包含不正确数量的定界符,则使该行失败,但继续处理该文件。
我的计划是将行加载到SQL Server的单个列中,但是在加载期间,我想在数据流期间测试每一行,以查看它是否具有正确数量的定界符,并添加派生列值来存储比较结果。
我想我可以使用脚本任务组件来做到这一点,但是我想知道是否有人以前做过,什么是最好的方法?如果要使用脚本任务组件,该如何在脚本任务内部访问带有分隔符的原始行?
解决方案:
我最终得到了Holder答案的修改版本,因为我发现TOKENCOUNT()不会为此SO answer计算空值。如果两个定界符之间没有一个值分隔,则将导致计数错误(至少出于我的目的)。
我改用以下表达式:
LEN(EntireRow) - LEN(REPLACE(EntireRow, "|", ""))
这将导致该行中正确的分隔符计数,而不管给定字段中是否有值。