想要使用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中运行。
对于这种情况有更好的解决方案吗?
答案 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)