SSIS 2012 - 重定向具有特殊字符的行

时间:2013-09-11 21:18:36

标签: sql sql-server ssis

我正在使用SSIS 2012并从平面文件源导入数据 - >临时表 - >决赛桌。 发现的任何错误都会重定向到错误文件。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

在脚本本身内部,我会使用类似How to recognize if a string contains unicode chars?的内容来识别坏字符的存在或潜在的正则表达式,具体取决于“特殊字符”对您的意义。

答案 1 :(得分:1)

您要处理多少个特定字符?如果它只是少数几个,您可以将FINDSTRING()||或“条件拆分中的”运算符组合在一起,例如:

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

会将包含“A”,“B”或“C”的test_columns的行过滤为单个分割。

如果由于字符的数量而过于笨重,那么一个脚本组件,就像billinkc建议的那样。 (如果特殊字符可以表示为规则表达式,则特别合适,因为脚本组件可以访问非常好的正则表达式函数。)