微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSIS 错误未找到列“x”的列分隔符

如何解决SSIS 错误未找到列“x”的列分隔符

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

enter image description here

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

文本限定符:“

标题行分隔符:{LF}

要跳过的标题行:0

所有列的Column Delimiter:逗号{,},除了最后一列WCASH的Column Delimiter = {LF}

运行包时,我在平面文件源中收到错误“未找到列“WCASH”的列分隔符。” “跳过数据行时出错。”

我尝试了许多在线建议(将 WCASH 列增加到 3000 个字符左右,删除平面文件连接并重新创建它),但仍然无法修复错误

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

谢谢

解决方法

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

如果是我,我不会将其识别为列分隔文件(基于 2 行数据)。这是一种参差不齐的正确文件格式,有人在其中添加了文本分隔符和列分隔符。

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

enter image description here

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

enter image description here

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

enter image description here

在我的数据流中,我拉入了忽略列以显示它们确实包含垃圾,但在您的包中,您不会想要这样做。

enter image description here

还剩下什么?

清理。

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。