我使用 SSIS 2012 并从平面文件源导入数据 -> 临时表 -> 最终表。发现的任何错误都将重定向到错误文件。
但是,im tio 应用了一个新约束,将包含特殊字符的特定列的所有行重定向到单独的错误文件中,然后再将其插入临时表。
我尝试使用条件拆分,但它使用 Findstring() 函数为每个特定字符创建一个案例。还有哪些其他可用选项?
我使用 SSIS 2012 并从平面文件源导入数据 -> 临时表 -> 最终表。发现的任何错误都将重定向到错误文件。
但是,im tio 应用了一个新约束,将包含特殊字符的特定列的所有行重定向到单独的错误文件中,然后再将其插入临时表。
我尝试使用条件拆分,但它使用 Findstring() 函数为每个特定字符创建一个案例。还有哪些其他可用选项?
我会考虑将脚本组件添加到您的数据流中并让它验证您的数据。
将名为 HasJunkData 的列添加到布尔类型 (DT_BOOL) 的输出中。如果您有多个要验证的内容,根据所需的粒度级别,您可能需要每个输入列都有一个标志,或者只是在行级别决定它的好坏。
在脚本本身内部,我会使用类似How to identify if a string contains unicode chars? 根据“特殊字符”对您的含义来识别是否存在错误字符或可能的正则表达式。
你要处理多少个特定的角色?如果只有几个,你可以在条件拆分中将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 建议的那样,脚本组件是可行的方法。(如果特殊字符可以表示为正则表达式,则特别合适,因为脚本组件可以访问非常好的正则表达式函数。)