为什么SSIS抱怨"文件末尾有一个部分行"?

lad*_*dge 3 ssis

我正在使用SSIS中的数据流任务将平面文件导入数据库.该文件非常简单:每行包含三个以逗号分隔的值.但是,每当我运行此任务时,我都会收到Flat File组件的警告:

警告:0x8020200F:文件末尾有一个部分行.

无论文件的大小如何,这个警告似乎都会发生:即使文件中只有少量行,视觉验证(扩展字符和可见的东西),我仍然会收到它.此外,我是否在文件末尾有一个空行或者我只是在没有尾随CR + LF的情况下结束它似乎并不重要.

如何摆脱此警告,以便我可以在启用WarnAsError的情况下运行我的包?

(顺便说一下,似乎其他人可能遇到了类似的问题.文件末尾有一个部分行,尽管这不是一个问题.)

lad*_*dge 5

如果遇到这个问题我发现了三件事.在三个案例中至少有两个案例中,SSIS忽略了我的输入文件行,只显示了上面的警告.因此,我不建议忽略此警告!

第1步:验证您的平面文件是否有效

输入文件无效时,将显示此错误.如果你的输入文件有数百万行,这可能特别难以检测,但是你发现文件格式违规是至关重要的,因为SSIS很乐意给你这个警告并继续它的方式而不导入有问题的行,或者有些情况下,违规行的行.我发现发现源文件问题的最简单方法是检查正在成功导入的行数.如果它与您在平面文件中所期望的数字大不相同,那么某些地方可能会出现问题.

第2步:在末尾尝试虚拟线(仅限固定宽度)

如果您使用的是固定宽度格式的输入文件,Microsoft可能会为您提供有用的知识库文章.基本上,他们建议您在文件末尾添加一个虚拟线.

我没有使用固定宽度的文件,所以我不能说这种技术有多么有用.

第3步:关闭非文本的文本限定

这是棘手的,因为我相信TextQualified属性默认为True.如果您的输入文件使用非文本字段(整数等),那么您必须告诉SSIS它不应该期望这些列被限定为文本.基本上,尽管看起来完全有效,但您的输入文件将无效.

TextQualified是Flat File Connection Manager中列的属性.

连接经理

要更改它,请打开连接管理器,单击"高级",然后单击非文本列.确保TextQualified属性设置为False.您需要为所有非文本列执行此操作.

在此输入图像描述