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

问题描述 投票:0回答:9

这个问题之前曾在这里被问过,但提出的解决方案似乎对我不起作用。

我正在尝试导入一个文本文件管道分隔文本限定符

"
。 SSIS 包返回错误消息

找不到列“columnX”的分隔符

其中 X 列是文件中的最后一个字段。

在连接管理器高级选项卡中,我已将

columnX
的列分隔符设置为
{LF}
,而所有其他字段均设置为垂直
|

我已验证该文件,没有丢失字段。有一些空值,但所有字段都在那里。

我无法指出是什么原因造成的。我们将非常感谢您的帮助。

sql ssis etl sql-server-data-tools ssis-2012
9个回答
8
投票

我意识到这个线程很旧,但我一直在寻找解决这个问题的方法,但没有找到。当我有太多列需要调整数据类型时,删除平面文件连接管理器是极端的。

在我出现此错误的场景中,它是最后一列,分隔符已从 {CR}{LF} 切换为 {LF}。我将其切换回 {CR}{LF} 并且成功了。

此外,一般情况下,标题行分隔符也更改为 {LF},我也将其更改为 {CR}{LF}。


1
投票

我建议删除平面文件连接管理器,然后重新创建它,以便它会自动设置所有选项。只需将列分隔符选择为

|

如果它不起作用,您必须验证平面文件不包含坏行。

检查这些可能有帮助的解决方案:

或者,如果您已经安装了 sql server,请尝试使用 导入和导出向导将此 fla 文件导入到 sql server 表中,并在导入后检查数据,这可能有助于检测包含错误的行。


1
投票

尝试增加平面文件连接管理器编辑器上“高级”选项卡中的列宽度。

Pic with example

它对我有用。


1
投票

这种情况在我身上发生过好几次。每次都是由于有人向 csv 文件添加了一列而引起的。当到达最后一列的末尾并期望回车换行符 cr/lf 时,会发生错误,但由于添加了列,因此只找到回车符。


1
投票

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

在多次尝试导入有问题的 CSV 失败后,我发现了一个怪癖 - 由于某些未知的原因,标题行以 CRLF 终止,而数据行以 LF 终止。在导入之前在 Notepad++ 中批量替换回车符可以让我继续。 SSIS 似乎很难导入具有混合行结尾的平面文件。 另一个标注,以防它帮助其他一些可怜的灵魂 - 如果您要导入最大长度的 varchar 列,您可能需要将数据类型更改为

Text Stream

以便 SSIS/导入向导处理它。


0
投票
header row delimiter

设置为 {LF}:


0
投票

如何在派生列转换中替换双引号?

https://social.msdn.microsoft.com/Forums/en-US/fe6be73a-d0d5-4d41-8d09-db5fe32f0d68/instruct-dataflow-task-to-redirect-bad-input-rows-to-log-文件?论坛=sqlintegrationservices


0
投票

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


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.