0

想要使用 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 中运行。

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

4

2 回答 2

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
于 2013-03-14T17:43:43.473 回答
0
  1. 使用导出向导创建 SSIS 包。选择[第一行是列名],excel目标,你的源表或查询
  2. 在最后一步中,将 SSIS 包保存为文件
  3. 使用 sp_configure 启用 xp_cmdshell
  4. 使用 t-sql 脚本执行 ('dtexec /file: ')
于 2013-03-15T06:44:55.453 回答