如何将查询结果导出到SQL Server 2008中的.csv文件?
答案 0 :(得分:155)
Here's a full screen version of that image, below
这将以逗号分隔的文本显示您的查询结果。
要将查询结果保存到文件:Ctrl + Shift + F
答案 1 :(得分:127)
我知道这有点旧,但这是一种更简单的方法......
使用默认设置运行查询(以网格格式显示结果,如果您的格式不是网格格式,请参阅下文)
右键点击网格结果,然后点击“将结果另存为”并保存。
如果您的结果不是网格格式,请右键单击编写查询的位置,将“结果”悬停并点击“结果到网格”
祝你好运!
答案 2 :(得分:40)
您可以使用PowerShell
$AttachmentPath = "CV File location"
$QueryFmt= "Query"
Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath
答案 3 :(得分:14)
如果有问题的数据库是本地的,以下可能是将查询结果导出到CSV文件的最有效方法(即,为您提供最大的控制权)。
在彻底完成这个过程后,我发现以下是最佳选择
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"
答案 4 :(得分:6)
使用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
但是,有几点需要注意:
您需要提供Microsoft.ACE.OLEDB.12.0提供程序。 Jet 4.0提供程序也可以使用,但它很古老,所以我使用了这个。
.CSV文件必须已经存在。如果您正在使用标题(HDR=YES
),请确保.CSV文件的第一行是所有字段的分隔列表。
答案 5 :(得分:5)
在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"
前两行可以使用 Invoke-SqlCmd 命令。
答案 6 :(得分:5)
MS Excel - >数据 - >新查询 - >从数据库..按照步骤
答案 7 :(得分:3)
如果您的值包含逗号,则使用本机SQL Server Management Studio技术导出为CSV(如@ 8kb建议的)不起作用,因为SSMS不会将值换行为双引号。对我有用的更强大的方法是简单地复制结果(在网格内单击然后按CTRL-A,CTRL-C)并将其粘贴到Excel中。然后从Excel保存为CSV文件。
答案 8 :(得分:2)
您可以使用QueryToDoc(http://www.querytodoc.com)。它允许您针对SQL数据库编写查询,并在选择分隔符后将结果导出为Excel,Word,HTML或CSV
答案 9 :(得分:2)
如果你不想使用Powershell,那么这个答案就是对8kb很好的答案的变化。唯一的区别是,不是选择CSV作为输出格式,而是选择Tab Delimited。这样,如果数据中有逗号,则不会跳过Excel中的单元格。此外,如果您将Excel的默认分隔符设置为选项卡,则只需复制所有SSMS查询结果(CTRL-A,CTRL-C)并粘贴到Excel中(无需另存为文件并导入Excel ):
现在您可以执行查询,然后执行CTRL-A选择所有结果,然后按CTRL-C复制到剪贴板,然后切换到Excel 2013(也可能在2007年工作,不确定)并粘贴 - 假设Excel的默认分隔符设置为tab。
答案 10 :(得分:1)
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
as @Slogmeister Extraordinaire Quoted是正确的。
需要有 1 GT;文件已经存在列 2 - ;需要安装Office
面临的错误
Msg 7303,Level 16,State 1,Line 1 无法初始化OLE DB提供程序的数据源对象" Microsoft.ACE.OLEDB.12.0"对于链接服务器"(null)"。"
Msg 15281,Level 16,State 1,Line 1 SQL Server阻止访问STATEMENT' OpenRowset / OpenDatasource'组件' Ad Hoc Distributed Queries'因为此组件已作为此服务器的安全配置的一部分关闭。系统管理员可以启用“Ad Hoc Distributed Queries”'通过使用sp_configure。有关启用“即时分布式查询”的详细信息,请搜索“即时分布式查询”和“即时分布式查询”。在SQL Server联机丛书中。
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 0
RECONFIGURE
GO
答案 11 :(得分:1)
这里还有一个值得一提的方法:
SQLCMD -S SEVERNAME -E -Q "SELECT COLUMN FROM TABLE" -s "," -o "c:\test.csv"
注意:我看不到任何网络管理员可以让您运行powershell脚本
答案 12 :(得分:0)
是的,当您可以直接访问服务器时,所有这些都是可能的。但是如果您只能从Web /应用程序服务器访问服务器呢?好吧,情况就是我们这么久了,解决方案是 SQL Server Export to CSV 。
答案 13 :(得分:0)
我希望10年还不算太晚,我在Windows Scheduler中使用了它;
"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搜索和反复试验。您会看到它选择了一个数据库,定义了输出位置并执行了一个过程。该过程只是一个查询,用于从数据库的表中选择要显示的行和列。