【问题标题】:The row delimiter cannot be the same as the column delimiter行分隔符不能与列分隔符相同
【发布时间】:2020-03-29 10:30:28
【问题描述】:

当我尝试在平面文件连接管理器编辑器中添加列并设置 ColumnDelimiter 时,出现错误:

行分隔符不能与列分隔符相同。

如何指定分隔符?

【问题讨论】:

  • 请检查我的解决方案,让我知道它是否适合您。

标签: ssis etl delimiter flat-file


【解决方案1】:

是的,这个错误很明显,请从flat file connection manager row delimiter 中选择{CR}{LF} 和任何 column delimiter 的荧光笔,你不会得到错误.

一般我们使用{CR}{LF}作为读取行尾,{CR}{LF}请查看下面的定义。

行尾字符包括CRLF。 Windows 在行尾同时使用{CR}{LF},而Unix 仅使用LF

  • CR = 回车
  • LF = 换行

请按照快照并选择突出显示的分隔符作为列分隔符以避免您的包中的错误。

【讨论】:

  • 我同意这一点,但如果主要错误是当 OP 尝试 当我尝试在平面文件连接管理器编辑器中添加列并设置 ColumnDelimiter 时 正如他所提到的,他收到了这个错误并且他无法添加列并返回到其他选项卡,那么这个解决方案将无法解决问题。
  • 如果您检查用于自动创建 SSIS 包的 DTS 程序集,您将看到从“列”选项卡更改分隔符将遍历每一列并以我在中描述的相同方式更改列分隔符我的回答
  • 我更新了我的答案以重现错误,您可以查看它以获取更多信息
【解决方案2】:

检查您的源文件,它可能没有您要添加的列。

单击浏览,然后重新加载包含该列的文件。

第二种解决方案:

在第一页的平面文件连接管理器编辑器中指定的格式应该只分隔。

将您的格式更改为其他格式,而不是将其更改回“分隔”,然后转到“列”部分,应启用列分隔符下拉菜单。

【讨论】:

  • 这可以被认为是一种解决方法,虽然它可以在不更改整个平面文件配置的情况下完成。
【解决方案3】:

假设您尝试从平面文件连接管理器中的“高级”选项卡添加新列,您必须注意,每列的 ColumnDelimiter 属性是您设置的列分隔符,但使用此属性的最后一列除外设置行分隔符。

回到错误:

行分隔符不能与列分隔符相同。

您必须检查最后一列分隔符是否与前一列不同。


更新 1 - 实验

我添加了一个新的平面文件连接管理器,在高级选项卡中我添加了两列,从下面的屏幕截图中,您可以检查第一列分隔符是,,而第二列是{CR}{LF}

如果您尝试将第二个分隔符更改为,,您将收到以下错误并且无法更改属性:

【讨论】:

  • 我可以知道您在第二个屏幕截图的列分隔符中选择 CRLF 的原因吗,您能想象一个列分隔符为 {CR}{LF} 的平面文件。
  • @Ajeet 正如我提到的,最后一列的 Columndelimiter 属性是行分隔符