日期:2014-05-17  浏览次数:20728 次

sql server导出数据到excel表格
背景:sql server 能否实现不用先建好excel文件,就导出数据到一个新的excel表格。试了exec master..xp_cmdshell bcp,这个需要先建好表格并且设置好文件权限之后才能够导出数据。
问题:能否我直接导出数据到一个实际不存在的文件名,导出的时候,自动创建好这个文件,然后导出数据。
导出数据

------解决方案--------------------
--这是个例子,我假设要把test库的temtable表的applicationID,Category两列导出成CSV文件
if OBJECT_ID('temtable','u')is not null
drop table temtable

select * into temtable from (select 'applicationID'as [applicationID],'Category'  as [Category] --表头
union all 
select CONVERT(varchar(20),[applicationID]), [Category] from  #temtable)a
declare @filename nvarchar(30)
select @filename='Report'+right(replace(convert(date,GETDATE()),'-',''),2)+substring(replace(convert(date,GETDATE()),'-',''),5,2)+substring(replace(convert(date,GETDATE()),'-',''),1,4)+'.csv'
------------------------------------------
declare @strSQL nvarchar(1024)
set @strSQL='bcp "SELECT applicationID,Category FROM test.dbo.temtable" queryout C:\Temp\DBA_date\'+@filename+' -c -T -t","'
print @strSQL
EXEC master..xp_cmdshell @strSQL

------解决方案--------------------
引用:
Quote: 引用:

--这是个例子,我假设要把test库的temtable表的applicationID,Category两列导出成CSV文件
if OBJECT_ID('temtable','u')is not null
drop table temtable

select * into temtable from (select 'applicationID'as [applicationID],'Category'  as [Category] --表头
union all 
select CONVERT(varchar(20),[applicationID]), [Category] from  #temtable)a
declare @filename nvarchar(30)
select @filename='Report'+right(replace(convert(date,GETDATE()),'-',''),2)+substring(replace(convert(date,GETDATE()),'-',''),5,2)+substring(replace(convert(date,GETDATE()),'-',''),1,4)+'.csv'
------------------------------------------