Out Put Excel File with Header for Single Table
使用SQL语句,在导出数据期间会用产生一个临时表
--定义一个变量
declare @columns varchar(8000)
--查询表的列名,并付值给变量
select
@columns=coalesce(@columns+',','')+column_name+' as '+column_name
from
information_schema.columns
where
table_name='TableName'
print @columns --显示变量现在的值,方便调试
--加引号
set @columns=''''+replace(replace(@columns,' as ',''' as '),',',',''')
print @columns --显示变量现在的值,方便调试
--检测是否存在临时表,存在则删除
if exists(select name from sys.tables where name = 'temp'and type = 'u')
begin
drop table temp
end
--将列名存放在临时表内
exec ('select '+@columns+' into temp')
--导出列名到目标 EXCEL 文件
exec [master].[dbo].[xp_cmdshell] 'bcp "select * from WMS.dbo.temp" queryout D:/obj.xls -c -S"./SQLExpress" -U"sa" -P"密码"'
--导出表数据到临时 EXCEL 文件
exec [master].[dbo].[xp_cmdshell] 'bcp "select * from [DBName].dbo.[TableName]" queryout D:/temp.xls -c -S"./SQLExpress" -U"sa" -P"密码"'
--将 临时 EXCEL 文件 数据 复制 到 目标 EXCEL 文件
exec [master].[dbo].[xp_cmdshell] 'type "D:/temp.xls" >> "D:/obj.xls"'
--删除临时 EXCEL 文件
exec [master].[dbo].[xp_cmdshell] 'del D:/temp.xls'
--删除临时表
drop table temp