SSIS 处理缺少文本限定符的平面文件

Posted

技术标签:

【中文标题】SSIS 处理缺少文本限定符的平面文件【英文标题】:SSIS Handling a Flat File Missing a Text Qualifier 【发布时间】:2016-11-09 16:04:11 【问题描述】:

我目前正在设计为 SSIS 包来导入一些 CSV 文件,并且需要考虑各种错误类型。其中一个错误是文本限定符不正确或缺失。

IE: "col1","col2","col3/,"col4"

包当前抛出错误“[ProductMaster CSV [66]] 错误:未找到列“列 2”的列分隔符。”。 这是我希望在这种情况下看到的。

显然,目前无法以正确格式获取最初发送的文件。

我尝试将文件更改为没有文本限定符,但如果字段中有逗号,则此文件会失败,因此不是可行的解决方案。

有什么方法可以解决这个问题吗?

【问题讨论】:

在您的示例中,您如何确定 col3 缺少文本限定符。答案是你没有。这类问题只会导致问题发生。 执行脚本任务来修复文件,然后将其导入,或者执行处理任务并使用现有的清理实用程序。这是一次性的吗? Excel 实际上非常擅长修复其中一些问题,您可以在 Excel 中打开并将其保存或转换回 CSV 或其他内容。这是我通常要求使用 Pipe (|) delimited 而不是更少的分隔符问题的原因之一 :) 这将是我们每天收到的文件。我希望这个测试是一个极端的例子。如果创建文件的系统实际上会得到一个错误的文本分隔符,我会感到惊讶。可以看看一些第 3 方选项,以防万一。管道建​​议很好! 【参考方案1】:

要解决此问题,请查看您的文件格式。使用 Notepad++ 之类的文本编辑器,如果您的文件是 CR,请确保不要使用 ("),而是在文本限定符中选择并在标题行中选择 CR。这应该 100% 有效

【讨论】:

【参考方案2】:

我使用第三方工具来读取 csv 文件,它可以处理这种情况。如果您必须自己做某事,我会将整行导入一列,然后使用存储过程或脚本组件对其进行解析。

有很多解决方案,有些是免费的,有些是最低成本的。

我从未找到使用“开箱即用”的 SSIS 连接管理器来处理此问题的方法。

【讨论】:

以上是关于SSIS 处理缺少文本限定符的平面文件的主要内容,如果未能解决你的问题,请参考以下文章

将数据导出到 CSV 平面文件时如何解决嵌入的文本限定符问题?

用逗号将 CSV 数据插入 SQL

获取所有具有绑定值的限定符的bean

类型限定符volatile

各个访问限定符的权限范围

volatile类型限定符的认识