将查询结果导出到SQL Server 2008中的.csv文件

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

  1. 打开SQL Server Management Studio
  2. 转到工具>选项>查询结果> SQL Server>结果到文本
  3. 在最右边,有一个名为输出格式的下拉框
  4. select逗号分隔,然后单击确定

下面是该图片的全屏版本

在这里输入图像说明

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

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

我知道这是有点旧,但这是一个更简单的方法…

  1. 运行你的查询默认设置(把结果以网格格式,如果你的网格格式,请参阅下面)

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

如果您的结果不是网格格式,请右键单击您在其中编写查询的位置,将“结果到”hover,然后单击“结果到网格”

祝你好运!

您可以使用PowerShell

 $AttachmentPath = "CV File location" $QueryFmt= "Query" Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath 

如果有问题的数据库是本地数据库,则以下可能是将查询结果导出到CSV文件(即给予最大控制权)的最可靠方法。

  1. 复制查询。
  2. 在对象资源pipe理器中,右键点击相关数据库。
  3. select“任务”>>“导出数据…”
  4. configuration你的数据源,然后点击“下一步”。
  5. select“平面文件”或“Microsoft Excel”作为目的地。
  6. 指定一个文件path。
  7. 如果使用平面文件,请根据需要进行configuration。 如果使用Microsoft Excel,请select“Excel 2007”(先前版本的行数限制为64k)
  8. select“写入查询来指定要传输的数据”
  9. 粘贴来自步骤1的查询。
  10. 点击下一步>>查看映射>>点击下一步>>select“立即运行”>>点击“完成”两次。

经过这个过程详尽的,我发现以下是最好的select

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 

以pipe理员身份运行PowerShell

 & "c:\path_to_your_ps1_file.ps1" 

使用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提供程序可用。 Jet 4.0提供者也可以工作,但是很古老,所以我使用了这个。

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

build立在NS的答案,我有一个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" 

前两行允许使用Invoke-SqlCmd命令的function。

如果您的值包含逗号,则使用本机SQL Server Management Studio技术导出为CSV(如@ 8kbbuild议)不起作用,因为SSMS不会将值用双引号括起来。 一个更强大的方法,我只是简单地复制结果(点击网格内,然后CTRL-A,CTRL-C),并将其粘贴到Excel中。 然后从Excel中保存为CSV文件。

MS Excel的 – >数据 – >新的查询 – >从数据库..下面的步骤

你可以使用QueryToDoc( http://www.querytodoc.com )。 它使您可以针对SQL数据库编写查询,并在您select分隔符后将结果导出为Excel,Word,HTML或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

Msg 7303,级别16,状态1,行1无法初始化链接服务器“(null)”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。

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 / OpenDatasource”,因为此组件作为此服务器的安全configuration的一部分被closures。 系统pipe理员可以使用sp_configure启用“Ad Hoc Distributed Queries”。 有关启用“Ad Hoc分布式查询”的更多信息,请在SQL Server联机丛书中search“Ad Hoc Distributed Queries”。

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

是的,当你直接访问服务器时,所有这些都是可能的。 但是如果您只能从Web /应用程序服务器访问服务器呢? 那么,情况是这样,我们早已回到了,解决scheme是SQL Server导出到CSV

如果你不想使用Powershell,这个答案是8kb的一个很好的答案。 唯一的区别是,不是selectCSV作为输出格式,而是select制表符分隔符。 这样,如果数据中有逗号,它将不会跳过Excel中的单元格。 此外,如果您将Excel的默认分隔符设置为制表符,则可以简单地复制所有SSMS查询结果(CTRL-A,CTRL-C)并粘贴到Excel中(无需另存为文件并导入到Excel ):

  • 在SSMS中,转到工具>选项>查询结果> SQL Server>结果到文本
  • 将输出格式更改为制表符分隔符
  • 点击OK

现在你可以执行你的查询,然后做一个CTRL-Aselect所有的结果,然后CTRL-C复制到剪贴板,然后切换到Excel 2013(也可以在2007年工作,不知道)并粘贴 – 假设Excel的默认分隔符设置为选项卡。

SSMS查询选项屏幕的图像