在 SQLServer2008中将查询结果导出到. csv 文件

如何将查询结果导出到 SQLServer2008中的. csv 文件?

560048 次浏览
  1. 打开 SQLServerManagementStudio
  2. 转到工具 > 选项 > 查询 结果 > SQLServer > 结果转为文本
  3. 在最右边,有一个下降 名为“输出格式”的下拉框
  4. 选择逗号分隔并单击“确定”

下面是这张图片的全屏版本

enter image description here

这将以逗号分隔的文本显示查询结果。

将查询结果保存到文件: Ctrl + Shift + F

可以使用 QueryToDoc (http://www.querytodoc.com)。它允许您针对 SQL 数据库编写查询,并在选择分隔符之后将结果导出到 Excel、 Word、 HTML 或 CSV

我知道这有点老套,但有个更简单的方法..。

  1. 使用默认设置运行查询(如果结果不是网格格式,则将结果放在网格格式中,见下文)

  2. 右键单击网格结果,然后单击“另存为结果”并保存。

如果您的结果不是网格格式,右键单击您编写查询的位置,将鼠标悬停在“ Results To”上,然后单击“ Results To Grid”

注意您没有捕获列标题!

祝你好运!

您可以使用 PowerShell

$AttachmentPath = "CV File location"
$QueryFmt= "Query"


Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath

基于 N.S 的回答,我有一个 PowerShell 脚本,它将导出到一个 CSV文件,该文件的字段周围用引号标记,逗号分隔,并跳过文件中的头信息。

add-pssnapin sqlserverprovidersnapin100
add-pssnapin sqlservercmdletsnapin100


$qry = @"
Select
*
From
tablename
"@


Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $qry | convertto-CSV -notype | select -skip 1  > "full path and filename.csv"

前两行支持使用 调用 SqlCmd命令-let。

如果值包含逗号,则使用本机 SQLServerManagementStudio 技术导出到 CSV (如@8kb 所建议的)不起作用,因为 SSMS 不会将值包装在双引号中。对我来说,一种更健壮的方法是简单地复制结果(在网格中单击,然后单击 CTRL-A,CTRL-C)并将其粘贴到 Excel 中。然后从 Excel 中保存为 CSV 文件。

使用 T-SQL:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName

但是,有几点需要注意:

  1. 您需要使 Microsoft.ACE.OLEDB.12.0提供程序可用。Jet4.0的供应商也可以用但它太旧了,所以我用了这个。

  2. 那个。CSV 文件必须已经存在。如果使用标头(HDR=YES) ,请确保。CSV 文件是所有字段的分隔列表。

是的,如果你能直接访问服务器,所有这些都是可能的。但是,如果您只能从 Web/应用程序服务器访问服务器,该怎么办呢?现在的情况是我们背部很长,解决方案是 一个 href = “ http://www.php-trivandlum.org/tips/mssql-Export-to-CSV/”rel = “ nofollow”> SQL Server Export to CSV

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName

引用@Slogmeister Extraordinaire 是正确的。

一个人需要 1 > 已显示列的文件 2 > 需要安装 Office

面对错误

1

味精7303,16层,州一,线路一 无法初始化 OLE DB 访问接口的数据源对象“ Microsoft.ACE.OLEDB. 12.0”,用于链接服务器“(null)”

64位 Http://download.microsoft.com/download/2/4/3/24375141-e08d-4803-ab0e-10f2e3a07aaa/accessdatabaseengine_x64.exe

32位 Http://download.microsoft.com/download/f/d/8/fd8c20d8-e38a-48b6-8691-542403b91da1/accessdatabaseengine.exe

2

味精15281,16层,州1,线路1 SQL Server 阻止访问组件“ Ad Hoc 分布式查询”的 STATEMENT“ OpenRowset/OpenDatassource”,因为该组件作为该服务器的安全配置的一部分被关闭。系统管理员可使用 sp _ configure 启用「 Ad Hoc 分布式查询」。有关启用“ Ad Hoc 分布式查询”的详细信息,请在 SQLServer 联机丛书中搜索“ Ad Hoc 分布式查询”。

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 0
RECONFIGURE
GO

如果所涉及的数据库是本地的,那么下面的方法可能是将查询结果导出到 CSV文件的最健壮的方法(也就是说,给予您最大的控制权)。

  1. 复制查询。
  2. 在对象资源管理器中右键单击有问题的数据库。
  3. 选择“任务”> > “导出数据...”
  4. 配置您的数据源,然后单击“下一步”。
  5. 选择“平面文件”或“ MicrosoftExcel”作为目标。
  6. 指定文件路径。
  7. 如果使用平面文件,请按需要进行配置。如果使用 MicrosoftExcel,请选择“ Excel2007”(以前的版本有64k 的行限制)
  8. 选择“编写查询以指定要传输的数据”
  9. 粘贴步骤1中的查询。
  10. 点击下一步 > > 查看映射 > > 点击下一步 > > 选择“立即运行”> > 点击“完成”两次。

在详尽地完成这个过程之后,我发现以下是最好的选择

PowerShell 脚本

$dbname = "**YOUR_DB_NAME_WITHOUT_STARS**"
$AttachmentPath = "c:\\export.csv"
$QueryFmt= @"
**YOUR_QUERY_WITHOUT_STARS**
"@


Invoke-Sqlcmd   -ServerInstance **SERVER_NAME_WITHOUT_STARS** -Database  $dbname -Query $QueryFmt | Export-CSV $AttachmentPath -NoTypeInformation

以管理员身份运行 PowerShell

& "c:\path_to_your_ps1_file.ps1"

MS Excel-> Data-> New Query-> From Database. . 按照步骤操作

如果你不想使用 Powershell,这个答案是8kb 的最佳答案的一个变体。唯一的区别是,不选择 CSV 作为输出格式,而是选择 Tab 限定符。这样,如果数据中有逗号,就不会跳过 Excel 中的单元格。另外,如果你将 Excel 的默认分隔符设置为制表符,你可以简单地复制所有的 SSMS 查询结果(CTRL-A,CTRL-C)并粘贴到 Excel 中(不需要保存为文件并导入到 Excel 中) :

  • 在 SSMS 中,转到 Tools > Options > Query Results > SQL Server > Results To Text
  • 将最右边的输出格式更改为 标签分隔
  • 单击 OK

现在你可以执行你的查询,然后做一个 CTRL-A 来选择所有的结果,然后 CTRL-C 来复制到剪贴板,然后切换到 Excel 2013(可能在2007年也有效,不确定)并粘贴——假设 Excel 的默认分隔符设置为 tab。

SSMS 查询选项屏幕图像

这里还有一个值得一提的方法:

SQLCMD -S SEVERNAME -E -Q "SELECT COLUMN FROM TABLE" -s "," -o "c:\test.csv"

注意: 我没有看到任何网络管理员让您运行 Powershell 脚本

我希望10年还不算太晚,我在 Windows 调度程序中使用了这个;

"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.EXE"
-S BLRREPSRVR\SQLEXPRESS -d Reporting_DB -o "C:\Reports\CHP_Gen.csv" -Q "EXEC dbo.CHP_Generation_Report" -W -w 999 -s ","

它打开 sql 命令。Exe 并运行为 sql 命令设计的脚本。Sql 命令脚本非常容易使用,只需要进行一些 google 搜索和反复试验。您可以看到它选择了一个数据库,定义了输出位置并执行了一个过程。该过程只是一个查询,用于从数据库中的表中选择要显示的行和列。