我正在 SSIS 中处理一个平面文件,其中一个要求是,如果给定行包含的分隔符数量不正确,则该行失败,但继续处理该文件。
我的计划是将行加载到 SQL Server 中的单个列中,但在加载期间,我想在数据流期间测试每一行,看看它是否具有正确数量的分隔符,并添加派生的列值来存储比较结果。
我想我可以使用脚本任务组件来做到这一点,但我想知道以前是否有人这样做过,最好的方法是什么?如果脚本任务组件是可行的方法,那么如何在脚本任务中访问带有分隔符的原始行?
解决方案:
我最终选择了 Holder 答案的修改版本,因为我发现 TOKENCOUNT() 不会根据此 SO answer 计算空值。 。当两个分隔符没有用值分隔时,将导致计数不正确(至少对于我的目的而言)。
我使用了以下表达式:
LEN(EntireRow) - LEN(REPLACE(EntireRow, "|", ""))
无论给定字段中是否有值,这都会导致行中的分隔符计数正确。
最佳答案
我的建议是使用派生列来进行测试
然后添加一个条件拆分来决定是否要插入行。
类似这样的事情:
使用“派生列”框中的 TokenCount 函数来获取列数,如下所示:TOKENCOUNT(EntireRow,"|")
关于sql-server - SSIS 脚本组件 - 获取数据流中的原始行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56646821/