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

问题描述 投票:0回答:6

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

我的问题是,我的其中一列中有逗号,并且逗号会中断 Excel 在正确位置解析 CSV。

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

有没有办法导出到 Excel,或者至少导出到包含逗号的列的 CSV?

sql sql-server ssms-2014
6个回答
14
投票
  1. 在对象资源管理器窗口中右键单击您的数据库,转到任务 -> 导出数据
  2. 选择 Sql Server 本机客户端作为源,输入连接参数
  3. 选择 Excel 作为您的目的地
  4. 在下一个屏幕上粘贴您选择的查询。列必须具有唯一的标题名称。
  5. 浏览剩余的屏幕,确保一切看起来正确

12
投票

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

Step one to export tsv

Selecting the tsv option

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


1
投票

您可以将 TOAD 用于 SQL Server。它具有导出为 Excel 的功能。这比 csv 更好,因为它保留了数据类型。 即使在试用模式下和试用期结束后,这也有效。我使用 Toad 只是为了导出到 Excel。 enter image description here

另一个选择是使用“Azure Data Studio”。它是免费的,并且具有另存为 Excel 选项。

enter image description here

我使用 SSMS 作为主要工具,但是当我需要将某些内容导出到 Excel 时,我会将查询复制并粘贴到 azure data studio 中。


0
投票

如果您可以查询数据库,则可以使用类似的方法来检索没有列的数据。

DECLARE @String varchar(25) = 'Comman delimited, value.'

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

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
投票

逗号

如果您使用 @MikaelEliasson 的解决方案,您实际上可以毫无问题地保存到 CSV - SSMS 会自动用双引号将包含逗号的任何数据括起来。只需右键单击,将结果另存为...数据网格结果上的任意位置。

Step one to export tsv

标题行

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

前导零

如果任何字段有前导零,Excel 将截断它们(即使您转换为文本)。为了避免这种情况,请使用

"=""MyLeadingZeroField"""
,所以:

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

在 Excel 中打开后将正确显示。

如果您尝试使用前导单引号或用单引号括起来的解决方案,这实际上不起作用,因为它们将显示在 Excel 中。

© www.soinside.com 2019 - 2024. All rights reserved.