如何让 SQL Server Management Studio 以正确的格式保存 CSV?

How do I get SQL Server Management Studio to save CSV in the correct format?

提问人:helpmepls 提问时间:12/6/2019 最后编辑:ziphelpmepls 更新时间:12/6/2019 访问量:388

问:

如果我不添加任何内容,只是“将结果另存为...”csv,那么除了第一列和最后一列之外,所有内容都会被正确引用和分隔。

我有一个更高版本的 SQL Server Management Studio,其中不包含选项“”。我同时使用了 REPLACE 和 QUOTENAME 来尝试以正确的格式获取它。Quote strings containing list separators when saving .csv results

例如,它应该看起来像"00301", "1020", "Description", "Email" but without any changes I get 00301, "1020", "Description", Email.

当我使用 QUOTENAME 向第一列和最后一列添加引号时,它会在“结果”窗口中显示正确的格式,但当我另存为 csv 时,它现在会向这些列添加额外的引号。现在我明白了"""00301""", "1020", "Description", """Email"""

当我使用 REPLACE 时,它会将其连接成一列,但仍然无法正确引用。

SQL CSV 替换 SSMS 引号

评论

1赞 Joel Coehoorn 12/6/2019
SSMS 知道列的数据类型,并且不引用 int 列。
0赞 Ken White 12/6/2019
在某些情况下,CSV 数据只需要在列数据两边加上引号(主要是列数据包含逗号,如果没有引号将被视为列分隔符 - 引号中的值会转义嵌入的分隔符)。您的第一个示例输出似乎完全没问题 - 不需要缺少引号。您是否对该 CSV 文件有特定问题,或者您只是因为您认为每个值周围都应该有引号而感到不安?
0赞 helpmepls 12/6/2019
为了将它上传到我需要的程序中,我需要引用每个值。你说它没有引用 int 列,但我的最后一列不是 int。

答:

1赞 Andrei Rantsevich 12/6/2019 #1

我通过加载项开发了一个解决方案: SSMSBoost 可以通过多种方式导出 ResultsGrid,您需要的一种称为“ResultsGrid 脚本程序”。它使用可自定义的模板将数据导出到文件。 您可以使用当前模板之一来创建自己的模板(这非常简单)。

有关数据导出的视频,其中引用了脚本程序:https://www.youtube.com/watch?v=waDCukeXeLU

功能说明:https://www.ssmsboost.com/Features/ssms-add-in-results-grid-script-results