SSIS错误:未找到“columnX”列的分隔符。

8
这个问题之前在这里提过,但是提出的解决方案似乎对我不起作用。我正在尝试导入一个以管道分隔符和文本限定符"的文本文件。SSIS包返回错误信息:

未找到“columnX”列的分隔符

其中X列是文件中的最后一列。
在连接管理器的高级选项卡中,我已经将columnX的列分隔符设置为{LF},而其他所有字段都设置为竖直的|
我已经验证了文件,没有缺少的字段。有一些空值,但是所有字段都存在。
我无法确定是什么原因导致这种情况。非常感谢您的帮助。

你能否发布最小的代码和文本文件,以便重现问题?请参阅此处的帮助:https://stackoverflow.com/help/mcve - Nef10
@marcia12 阅读Tour页面是很好的。 - Hadi
9个回答

8
我知道这个帖子已经很老了,但我正在寻找解决这个问题的方法,但没有找到。当我有很多列需要调整数据类型时,删除平面文件连接管理器是极端的做法。
在我的情况下,这个错误出现在最后一列,分隔符从{CR}{LF}变成了{LF}。我把它改回了{CR}{LF},然后它就正常工作了。
另外,在常规选项中,标题行分隔符也已经改成了{LF},我也将其改为了{CR}{LF}。

1
尝试在“扁平文件连接管理器编辑器”的高级选项卡中增加ColummnWidth。

示例图片

对我有效。


1

我在从Oracle SQL Developer导出并需要导入到SQL Server的一些CSV文件中遇到了这个问题。

经过多次尝试,我发现一个怪异的问题 - 由于某种未知的原因,标题行以CRLF结束,而数据行以LF结束。在使用Notepad++进行换行符的大规模替换后,导入成功了。SSIS似乎难以导入具有混合行结尾的平面文件。

还有一个提示,如果您要导入最大长度varchar列,则可能需要将数据类型更改为文本流,以便SSIS /导入向导处理它。


这应该是被接受的答案 - 这对我有用。我希望我能给它点赞两次。 - EJoshuaS - Stand with Ukraine

1

我曾多次遇到这种情况。每次都是由于有人向csv文件中添加了一列而引起的。当它到达最后一列并期望回车换行符CR / LF时,由于添加了一列,它只找到了回车符号而出现错误。


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

1
我建议删除平面文件连接管理器,并重新创建,这样它将自动设置所有选项。只需选择列分隔符为| 如果不起作用,您必须验证平面文件不包含错误行。
请检查以下解决方案,它们可能会有所帮助: 或者,如果您已安装 SQL Server,请使用导入和导出向导将此 fla 文件导入到 SQL Server 表中,并在导入数据后检查数据,这可能有助于检测包含错误的行。

0
我在dat文件中使用$作为文本分隔符。 但是,我将设置更改为无。 这样做解决了错误。


0

不要将最后一列的分隔符设置为LF。如果文件行以{LF}结尾(我相信您已经验证过了),那么请将标题行分隔符设置为{LF}: {{link1:enter image description here}}


1
最后一列的分隔符始终等于行分隔符。更改它可能会导致错误。 - Yahfoufi

0

我曾经遇到过同样的问题,我的情况是由于引用限定字段中逗号前有一个空格造成的。

例如:"John","Smith","NY"(在“Smith”后和逗号之前有一个空格)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接