0

我使用 SSIS 2012 并从平面文件源导入数据 -> 临时表 -> 最终表。发现的任何错误都将重定向到错误文件。

但是,im tio 应用了一个新约束,将包含特殊字符的特定列的所有行重定向到单独的错误文件中,然后再将其插入临时表。

我尝试使用条件拆分,但它使用 Findstring() 函数为每个特定字符创建一个案例。还有哪些其他可用选项?

4

2 回答 2

2

我会考虑将脚本组件添加到您的数据流中并让它验证您的数据。

将名为 HasJunkData 的列添加到布尔类型 (DT_BOOL) 的输出中。如果您有多个要验证的内容,根据所需的粒度级别,您可能需要每个输入列都有一个标志,或者只是在行级别决定它的好坏。

在脚本本身内部,我会使用类似How to identify if a string contains unicode chars? 根据“特殊字符”对您的含义来识别是否存在错误字符或可能的正则表达式。

于 2013-09-11T22:01:10.270 回答
1

你要处理多少个特定的角色?如果只有几个,你可以在条件拆分中将FINDSTRING()s 与“或”运算符组合在一起,例如:||

(FINDSTRING( [test_column] , "A", 1) > 0) || (FINDSTRING( [test_column] , "B", 1) > 0) || (FINDSTRING( [test_column] , "C", 1) > 0)

会将包含“A”、“B”或“C”的 test_columns 的行过滤到单个拆分中。

如果由于字符数而太笨拙,那么就像 billinkc 建议的那样,脚本组件是可行的方法。(如果特殊字符可以表示为正则表达式,则特别合适,因为脚本组件可以访问非常好的正则表达式函数。)

于 2013-09-12T09:36:05.123 回答