SSIS 错误找不到列 "x" 的列分隔符

SSIS error The column delimiter for column "x" was not found

我有一个如下所示的 CSV 文件

在我的 SSIS 包 (Visual Studio 2017) 中,我创建了一个平面文件连接

文本限定符:“

Header 行分隔符:{LF}

Header 要跳过的行:0

所有列的列分隔符:逗号 {,},最后一列 WCASH 除外,其列分隔符 = {LF}

当 运行 包时,我在平面文件源中收到错误消息“找不到列“WCASH”的列定界符。” “跳过数据行时出错。”

我尝试了很多网上的建议(将 WCASH 列增加到大约 3000 个字符,删除 Flat 文件连接并重新创建它),但仍然无法修复错误。

你知道我该如何修复这个错误吗?

谢谢

您的电子表格中有一些有趣的功能。第一行中的列名称中有尾随空格。第 2+ 行中的列值在右双引号(第 3 列)之后有空格,第四列和最后两列有前导空格。这闻起来像是从大型机生成并强制转换为 CSV 的文件。

如果是我,我不会将此识别为列分隔文件(基于 2 行数据)。这是有人添加了文本分隔符和列分隔符的右文件格式。

  • 使用 LF 作为 header 行分隔符
  • header 要跳过的行 = 1
  • 取消选中第一行中的列名称

在“列”选项卡中,设置引号和逗号所在的列。

在“高级”选项卡中,每隔一列以 忽略 命名,下一列将是实际数据。

在我的数据流中,我拉入了忽略列以表明它们确实包含垃圾,但在您的包裹中,您不希望这样做。

还剩什么?

清理。

您不能将数字转换为数字数据类型,因为这些前导空格会导致问题(如果我没记错的话)。另外,字符串数据也可能有尾随空格,因此我将有一个派生列将 TRIM 应用于所有列。

从那时起,尝试转换为强类型值并将其放入数据库。

这是我的示例输入文件(以 unix/linefeed/LF 结尾保存)

"NAME  ","OPEDT ","OBJ","PCT","MGR   ","rr    ","WCASH "       
"AAAA","07/12/92","BELL"  ,    3.23,"AUJ",    0,       12364.00
"BBBB","01/05/91","PELL"  ,    0.78,"ACC",    0,        9879.00