SSMS将查询结果导出为Excel或CSV

12

我正在尝试将查询结果导出为CSV文件,然后最终导入Excel。

我的问题是,我的其中一列中有逗号,这些逗号会打断Excel正确解析CSV文件的位置。

由于我没有数据库写入权限,因此无法将查询结果放入表格中,然后将该表格导出到Excel中。

是否有一种方法可以导出到Excel,或者至少在包含逗号的列的情况下导出CSV文件?


你应该能够创建临时表。只需要用户能够连接到数据库就可以创建这些表。 - NotMe
6个回答

11

1 在对象资源管理器窗口中,右键单击您的数据库,选择“任务” -> “导出数据”

2 选择Sql Server本机客户端作为源,并输入您的连接参数

3 选择Excel作为目标

4 在下一个屏幕上粘贴您的选择查询

5 浏览其余屏幕,确保一切看起来正确

6 获得利润


1
这很棒,尽管它不允许我使用临时表进行查询。 - JonoB

9
我处理这个问题的方式是使用制表符分隔的文件(假设数据中没有制表符)。

Step one to export tsv

Selecting the tsv option

另一种尝试的方法是直接从SSMS的查询结果中复制并粘贴表格到Excel中,然后从那里保存文件。


1
您可以使用适用于 SQL Server 的 TOAD。它具有导出为 Excel 的功能。这比 CSV 更好,因为它保留了数据类型。即使在试用模式和试用期过后,这也可以工作。我仅使用Toad来将数据导出到Excel。 enter image description here

另一种选择是使用“Azure数据工作室”。 它是免费的,并且具有另存为Excel选项。

enter image description here

我通常使用SSMS作为我的主要工具,但是当我需要将某些内容导出到Excel时,我会将查询复制并粘贴到Azure Data Studio中。


0
使用替换函数将逗号替换为竖线或其他字符。在Excel中,如果需要,可以使用Excel的替换功能将竖线恢复为逗号。
select
 Date     = a.Date_Time,
 Action   = Type,
 Username = a.username,
 Desc     = replace( description,',','|'),  -- replace pesky commas
from
 dbo.AuditLog a
where
 a.Date_Time > DATEADD( DAY, -1, getdate()) 

0
如果您可以查询数据库,您可以使用类似以下代码来检索没有列的数据。
DECLARE @String varchar(25) = 'Comman delimited, value.'

SELECT REPLACE(@String, ',', ' ') AS ScrubbedValue

0

逗号

如果您使用{{link1:@MikaelEliasson的解决方案}},实际上可以在不出现任何问题的情况下保存为CSV格式 - SSMS将自动用双引号括起包含逗号的任何数据。只需右键单击,选择“另存为结果”即可将数据网格结果保存在任何位置。

Step one to export tsv

标题行

包括标题行, 导航到工具 → 选项 → 查询结果 → 结果到网格,并确保勾选了“复制或保存结果时包括列标题”。

前导零

如果任何字段有前导零,Excel会截断它们(即使你转换为文本)。要避免这个问题, 使用"=""MyLeadingZeroField""",例如:

 SELECT CONCAT('"=""', MyLeadingZeroField, '"""')

一旦在Excel中打开,它将正确显示。

如果您尝试使用前导单引号或用单引号括起来的解决方案,这并不真正起作用,因为这些内容将在Excel中显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接