如何将SQL Server 2005数据传输或导出到Excel
我有一个简单的SQLselect查询,我想将结果转储到Excel文件中。 我只能保存为.csv并转换为.xls创build一些超级丑陋的输出。 无论如何,据我所知(使用谷歌)这似乎并不那么直截了当。 任何帮助将不胜感激。
使用Excel中的“外部数据”。 它可以使用ODBC连接从外部数据源获取数据:数据/获取外部数据/新build数据库查询
这样,即使数据库中的数据发生变化,也可以轻松刷新。
SSIS对于做这样的事情是一个不费吹灰之力,而且非常简单(这只是它的一种)。
- 在SQL Management Studio中右键单击数据库
- 转到任务,然后导出数据,你会看到一个易于使用的向导。
- 你的数据库将成为源代码,你可以input你的SQL查询
- selectExcel作为目标
- 在向导结束时运行它
如果你愿意的话,你也可以保存SSIS包(在向导的末尾有一个选项),这样你就可以按计划进行操作(甚至可以打开和修改,以便在需要时添加更多的function)。
我已经find一个简单的方法来将查询结果从SQL Server Management Studio 2005导出到Excel。
1)select菜单项查询 – >查询选项。
2) 复制或保存结果时,在结果 – >网格 – > 包含列标题中设置checkbox。
之后,当您select全部并复制查询结果时,您可以将它们粘贴到Excel中,列标题将出现。
看到这个
这是迄今为止从SQL导出为excel的最佳文章:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926
引用用户madhivanan
,
除了使用DTS和导出向导之外,我们也可以使用这个查询将数据从SQL Server2000导出到Excel
创build一个名为testing的Excel文件,其头标与表列相同,并使用这些查询
1从SQL Server表导出数据到现有的EXCEL文件
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;', 'SELECT * FROM [SheetName$]') select * from SQLServerTable
2从Excel导出数据到新的SQL Server表
select * into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;HDR=YES', 'SELECT * FROM [Sheet1$]')
3将数据从Excel导出到现有的SQL Server表
Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;HDR=YES', 'SELECT * FROM [SheetName$]')
4如果您不想提前创buildEXCEL文件并想要将数据导出到该文件,请使用
EXEC sp_makewebtask @outputfile = 'd:\testing.xls', @query = 'Select * from Database_name..SQLServerTable', @colheaders =1, @FixedFont=0,@lastupdated=0,@resultstitle='Testing details'
(现在你可以find带有表格格式的文件)
5要使用标题(列名)将数据导出到新的EXCEL文件,请创build以下过程
create procedure proc_generate_excel_with_columns ( @db_name varchar(100), @table_name varchar(100), @file_name varchar(100) ) as --Generate column names as a recordset declare @columns varchar(8000), @sql varchar(8000), @data_file varchar(100) select @columns=coalesce(@columns+',','')+column_name+' as '+column_name from information_schema.columns where table_name=@table_name select @columns=''''''+replace(replace(@columns,' as ',''''' as '),',',',''''') --Create a dummy file to have actual data select @data_file=substring(@file_name,1,len(@file_name)-charindex('\',reverse(@file_name)))+'\data_file.xls' --Generate column names in the passed EXCEL file set @sql='exec master..xp_cmdshell ''bcp " select * from (select '+@columns+') as t" queryout "'+@file_name+'" -c''' exec(@sql) --Generate data in the dummy file set @sql='exec master..xp_cmdshell ''bcp "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c''' exec(@sql) --Copy dummy file to passed EXCEL file set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"''' exec(@sql) --Delete dummy file set @sql= 'exec master..xp_cmdshell ''del '+@data_file+'''' exec(@sql)
创build过程后,通过提供数据库名称,表名称和文件path来执行它:
EXEC proc_generate_excel_with_columns 'your dbname', 'your table name','your file path'
它是一页29页,但这是因为其他人performance出各种其他方式,以及人们问这样的问题如何做到这一点。
完全按照这个线索,看看人们提出的各种问题以及如何解决问题。 我拿起了相当多的知识,只是略读,并用它的一部分来获得预期的结果。
更新单个单元格
还有一位成员彼得·拉森(Peter Larson)发表了以下文章:我认为这里缺less一件东西。 能够导出和导入Excel文件是非常好的,但是如何更新单个单元呢? 还是一系列的细胞?
这是你如何pipe理的原则
update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=c:\test.xls;hdr=no', 'SELECT * FROM [Sheet1$b7:b7]') set f1 = -99
您也可以使用以下方法将公式添加到Excel中:
update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=c:\test.xls;hdr=no', 'SELECT * FROM [Sheet1$b7:b7]') set f1 = '=a7+c7'
使用T-SQL导出列名称
会员Mladen Prajdic也有一个关于如何在这里做这个博客条目
参考: http://www.sqlteam.com (顺便说一句,这是一个很好的博客/论坛,任何人都希望从SQL Server中获得更多)。
这里有一个video,将逐步向您展示如何将数据导出到Excel。 对于需要导出到Excel的“一次性”问题,这是一个很好的解决scheme:
特别报告
如果您正在寻找专门的项目,而不是将要放入SSIS的东西。 从SSMS内部简单地突出显示结果网格,复制,然后粘贴到Excel中,这不是优雅,但工程。 然后,您可以保存为原生.xls而不是.csv
只要在Excel中做这件事情就更容易了! 打开Excel数据>导入/导出数据>导入数据在文件名旁边单击“新build源”button在欢迎使用数据连接向导中,selectMicrosoft SQL Server。 点击下一步。 input服务器名称和凭证。 从下拉菜单中select你需要的数据库。 select您的表格,然后点击下一步…..input一个描述,如果你想,然后点击完成。 当您完成并回到Excel中时,只需点击“确定”即可。
创buildExcel数据源并插入值,
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;', 'SELECT * FROM [SheetName$]') select * from SQLServerTable
更多信息请访问http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926
您始终可以使用ADO将结果写入到logging集对象的工作表单元格中
一个方便的工具将SQL转换为Excel,无需编程即可将SQL表或SQL查询结果转换为Excel文件。
主要function – 将SQL表转换/导出到Excel文件 – 将多个表(多个查询结果)转换/导出到多个Excel工作表。 – 允许灵活的TSQL查询,可以有多个SELECT语句或其他复杂的查询语句。
B.问候,亚历克斯
有几个工具从SQL Server导出/导入到Excel。
Google是你的朋友:-)
我们使用DbTransfer(也可以将完整的数据库导出到Excel文件): http ://www.dbtransfer.de/Products/DbTransfer。
之前我们已经使用了sql server的openrowsetfunction,但我从来没有满意过,因为它不是很容易使用,缺乏function和速度…
尝试“导入和导出数据(32位)”工具。 安装MS SQL Management Studio Express 2012后可用。
使用此工具,select数据库,表格或插入自己的SQL查询并select目标(例如MS Excel文件)非常容易。
您可以右键点击SQL服务器中的结果网格,然后select另存为CSV。 那么你可以将它导入到Excel中。
Excel为您提供了一个导入向导,确保您select逗号分隔。 当我需要将50k +logging导入到excel中时,它对我来说工作的很好。
检查这个。
Query -> Query Options. Results -> Grid -> Include column headers when copying or saving the results