2013-03-14 49 views
0

想要使用T-SQL将数据从SQL Server 2008中的表导出到Windows 7上的excel文件。 通过搜索互联网上,许多人都试图如下:如何使用T-SQL将数据从表格导出到SQL Server 2008上的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中运行。

这种情况下的任何更好的解决方案?

回答

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

大容量复制程序= BCP

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

用法示例:

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

这是一个命令行util的,所以你需要,如果你要使用命令外壳功能从SQL Server执行此操作。我很好奇,如果您使用的sqlcmd试图潜在地使用bcp。请注意直接从SQL创建文件,如果您发送到某些位置,SQL帐户可能无法访问,则您将遇到权限问题。首先要记住运行TSQL的机器不是服务器,因此使用本地路径时所保存的位置与运行脚本的服务器相关,而不是通过TCP/IP到SQL Server运行脚本的用户。我认为SQL Server文件创建的默认值是服务器上SQL Server'data'位置的根安装。喜欢的东西:

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

谢谢。如何在TSQL中运行它,而不是在OS命令行窗口中运行? – KentZhou 2013-03-14 17:46:54

+0

在配置选项中启用XP_Cmdshell。 http://msdn.microsoft.com/en-us/library/ms190693.aspx – djangojazz 2013-03-14 17:49:37

+0

谢谢。得到了与bcp一起工作的xp_cmdshell。但有问题:不能使用bcp生成标题(列名)。 – KentZhou 2013-03-14 18:43:11