如何使用T-SQL将数据从表导出到SQL Server 2008上的Excel?

时间:2013-03-14 17:35:30

标签: sql-server-2008 excel tsql

想要使用T-SQL将数据从SQL Server 2008中的表导出到Windows 7上的excel文件中。 通过互联网搜索,许多人尝试以下:

Insert into openrowset ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=c:\MyExcel.xls;','SELECT * FROM [Sheet1$]')
select * FROM mytab

我也试过了。我不行。

另请尝试以下内容:

sqlcmd -S myServer -d myDB -E -Q "select * from Tab" -o "MyData.csv" -h-1 -s"," 

好的没有错误,但没有创建文件。还不确定这是否可以在T-SQL中运行。

对于这种情况有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

批量复制程序= bcp

MSDN:http://msdn.microsoft.com/en-us/library/ms162802.aspx

示例用法:

bcp AdventureWorks2012.Sales.Currency out "Currency Types.dat" -T -c

这是一个命令行工具,因此如果必须从SQL Server执行此操作,则需要使用命令shell功能。我很好奇你使用的sqlcmd是否试图在底层使用bcp。请注意,直接从SQL创建文件,如果由于SQL帐户可能无权访问而发送到某些位置,则会出现权限问题。最重要的是要记住运行TSQL的计算机不是服务器,因此在使用本地路径时保存到的位置与运行脚本的服务器相关,而不是用户通过TCP / IP运行脚本到SQL Server。我认为SQL Server的文件创建默认值是服务器上SQL Server的“数据”位置的根安装。类似的东西:

C:\Program Files\Microsoft SQL Server\(version current is: 110)\Data

答案 1 :(得分:0)

  1. 使用导出向导创建SSIS包。选择[第一行是列名],Excel目标,源表或查询
  2. 在最后一步中,将SSIS包保存为文件
  3. 使用sp_configure启用xp_cmdshell
  4. 使用t-sql脚本执行exec('dtexec / file:')