我想将查询中的数据导出到excel文件。我知道这里有很多像这样的问题,但在我的情况下没有人可以接受。
例如,像使用OPENROWSET的这个主题:T-SQL: Export to new Excel file
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;',
'SELECT * FROM [SheetName$]') select * from SQLServerTable
它只在我自己创建testing.xls时成功执行,并且还准确定义将在此excel文件中从我的查询中导出的列数。否则,将发生错误:列名或提供的值数与表定义不匹配。
我还在这里尝试另一个解决方案:http://weblogs.sqlteam.com/mladenp/archive/2006/07/25/10771.aspx使用Exec master..xp_cmdshell
这确实很有用,但是,我听说xp_cmdshell对SQL Server来说是一个很大的安全威胁。所以,我可能不应该使用它。
我还有其他办法吗?
答案 0 :(得分:1)
如果您正在寻找快速而肮脏的解决方案,则可以使用Management Studio本身。
以下是步骤:
如果您需要程序化解决方案,那将无济于事,在这种情况下您必须使用Microsoft(Microsoft.Office.Interop.Excel)或第三方解决方案;你甚至可以build one using Office Open XML。
如果你需要TSQL解决方案,你在问题中提到的OPENROWSET应该没问题。
您可以使用Excel专用解决方案并使用Excel本身的数据窗格导入数据(从SQL服务器导入)。
另一种可能性不必与SQL Server或Excel本身耦合Powershell。但是,我没有进入Powershell,所以如果你更喜欢这种方法,你将需要进一步研究。
此外,this有点过时但有趣的阅读。
答案 1 :(得分:0)
尝试使用较新版本的Excel。从您的查询看起来您使用的是Excel 97 - 此版本中可能存在大量的错误和不兼容性。
如果这对其他选项没有帮助: - 像Ozren建议的那样从SSSM手动完成 - 尝试为此
创建SSIS包以下是其他几个让你入门的主题
http://www.connectionstrings.com/excel/