检测SSIS中的部分行

时间:2012-11-13 17:16:28

标签: error-handling ssis delimiter script-component

情况:来自平面文件源的制表符分隔行缺少行末尾的列。行在平面文件连接管理器中由{CR}{LF}分隔,最后一列也由{CR}{LF}分隔。所有其他列均由Tab {t}分隔。 SSIS正在导入该行。

示例:

Column_1 {t} Column_2 {t} Column_3 {t} Column_4 {CR}{LF}

123 {t} 123 {t} 123 {t} 123 {CR}{LF}

123 {t} 123 {CR}{LF}

123 {t} 123 {t} 123 {{t} 123 {CR}{LF}

123 {t} 123 {t} {t} {CR}{LF}

123 {t} 123 {t} 123 {t} 123 {CR}{LF}

问题:没有剩余列标签分隔的部分行(请参阅上面的第2行)将后续行视为当前行的一部分,而包含制表符分隔列的行则空白(见上文第4行)没有。

所需输出:需要发出错误信号表示部分行。

检查文件中间部分行的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果解析时缺少列,则pre-denali(2012)SSIS似乎失败。这是通过始终检查行分隔符在2012年修复的。

请参阅:http://blogs.msdn.com/b/mattm/archive/2011/07/17/flat-file-source-changes-in-denali.aspx

在2012年之前的SSIS中解决这个问题包括编写自己的解析器(这是我们选择做的),在解析数据之前转换数据,或者使用平面文件源来解析行。