【问题标题】:When SQL Server 2008 query results are exported to CSV file extra rows are added当 SQL Server 2008 查询结果导出到 CSV 文件时,会添加额外的行
【发布时间】:2012-02-13 18:23:26
【问题描述】:

当我将查询结果从 SQL Server 2008 导出为 CSV 或制表符分隔的 txt 格式时,当我在 Excel 中打开导出的文件或将其导入 Access 时,我总是最终看到额外的记录(非空白)。

SQL查询结果返回116623行

但是当我导出到 csv 并使用 excel 打开时,我看到了 116640 条记录。我尝试将 csv 文件导入访问,我还看到了额外的记录。

奇怪的是,如果我将 excel 中的总数加到第 116623 行,我的总数是正确的,这意味着我有正确的数据,但在那之后额外的 17 条记录是坏数据,我没有知道它是如何被添加的。

有谁知道是什么原因导致这些额外的记录/行出现在我的 CSV 文件的末尾?

我导出的方式是右键单击结果并导出到 csv(逗号分隔)或 txt(制表符分隔)文件,两者都导致了问题。

【问题讨论】:

  • 你是如何导出的? SSMS?
  • 我导出的方式是右键单击结果并导出到 csv(逗号分隔)或 txt(制表符分隔)文件,两者都会导致问题
  • 我刚刚注意到一些奇怪的事情。这次我尝试使用导出向导进行导出,向导说它导出了 116623 条记录(这是正确的记录数量),但是当我在 excel 中打开文件时,我看到 116786 行,所以我认为这一定是一个问题可能会出类拔萃??
  • @JuanVelez 最后的额外记录是否存在于您的源数据集中?
  • @JuanVelez 正如 HLGEM 所提到的,您的数据中有一些奇怪的字符会在 Excel 中产生额外的行。

标签: sql-server-2008 csv export


【解决方案1】:

我敢打赌,在这些大量行中,您有一些数据在记录内部有回车(例如包含换行符的地址记录)。在您期望数据的某些列中查找具有空数据的行。我通常将文件重新导入工作表(具有标识,以便您可以识别哪些行靠近坏行),然后对其运行查询以找出那些不好的。

【讨论】:

  • +1 只是喜欢有根据的猜测。它显示了这方面的经验
  • 我相信大概是这样。我所做的是从 SQL Server 2008 导出到 CSV,然后将文件重新导入 SQL Server 2008 并看到我有相同的匹配数据(没有额外的记录)。出于某种原因,excel 和 access 正在添加额外的记录(可能是导致换行符的特殊字符)。我需要将此文件发送给将处理数据的人,所以我只会让他们知道将文件导入 SQL 以查看正确的数据作为 excel 和访问显示不正确的数据。感谢您的帮助。
  • 另一种方法是在导出之前识别特殊字符并替换它
【解决方案2】:

实际上,导出结果作为功能存在错误。导出结果后,在十六进制编辑器中打开 csv 文件并查找最后一条记录的唯一键。您会在文件末尾找到它。找到该记录的 OD OA 并删除后面的所有其他内容。它不是 Excel 或 Access。由于某种原因,SQL 无法在不损坏文件末尾的情况下导出 csv。

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2016-05-24
    相关资源
    最近更新 更多