情况:来自平面文件源的制表符分隔行缺少行末尾的列。行在平面文件连接管理器中由{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行)没有。
所需输出:需要发出错误信号表示部分行。
检查文件中间部分行的最佳方法是什么?
答案 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中解决这个问题包括编写自己的解析器(这是我们选择做的),在解析数据之前转换数据,或者使用平面文件源来解析行。