create proc bcp_excel
@tableName varchar(100)
as
set nocount on
declare @column varchar(8000)
set @column='select '
select @column = @column + ''''+ name + space(100) +''''+'as ' + name + ',' --如果某个列的长度大于100,那么把space中的数字调大一点
from (select b.name from sysobjects a join syscolumns b on a.id=b.id where a.name=@tableName) tem
set @column = left(@column,len(@column)-1)
--print @column
set @column = @column + ' into ##temp from (select top 1 b.name from sysobjects a join syscolumns b on a.id=b.id where a.name='''+@tableName+''') tem'
exec (@column)
exec('insert into ##temp select * from '+@tableName+'')
exec master..xp_cmdshell 'bcp "select * from ##temp" queryout c:\b.xls -c -q -Usa -Ppwd'
drop table ##temp
set nocount off
declare @column varchar(8000),@tableName varchar(100)
set @tableName = 'tableName' --导出的表名称
set @column='select top 1 '
select @column = @column + ''''+name +''''+'as ' + name + ',' from (select b.name from sysobjects a join syscolumns b on a.id=b.id where a.name=@tableName) tem
set @column = left(@column,len(@column)-1)
set @column = @column + ' into ##temp from (select distinct b.name from sysobjects a join syscolumns b on a.id=b.id where a.name='''+@tableName+''') tem'
exec (@column)
exec('insert into ##temp select * from '+@tableName+'')
exec master..xp_cmdshell 'bcp "select * from ##temp" queryout c:\b.xls -c -q -Usa -Ppwd' --bcp导出
declare @column varchar(8000),@tableName varchar(100)
set @tableName = 'mytable'
set @column='select top 1 '
select @column = @column + ''''+name +''''+'as ' + name + ',' from (select b.name from sysobjects a join syscolumns b on a.id=b.id where a.name=@tableName) tem
set @column = left(@column,len(@column)-1)
set @column = @column + ' into ##temp from (select distinct b.name from sysobjects a join syscolumns b on a.id=b.id where a.name='''+@tableName+''') tem'
exec (@column)
exec('insert into ##temp select * from '+@tableName+'')
exec master..xp_cmdshell 'bcp "select * from ##temp" queryout c:\b.xls -c -q -Usa -Psqlca.sqlcode'
drop table ##temp
pengdali(大力 V2.0)
set @temp1='select @value1='''',@value2='''' select @value1=@value1+'',''''''+a.name+''''+char(39)+'' [''+a.name+'']'',@value2=@value2+'',cast(''+''[''+a.name+'']''+ '' as varchar(200))'' from '+@库名+'..syscolumns a,'+@库名+'..sysobjects d where a.id=d.id and d.name='''+@表名+''''+' order by a.colorder'
中的
@value1﹐@value2是什么意思﹐看不大明白
CrazyFor(蚂蚁)
DTS包怎樣在存储过程中调用呀﹐能詳細點嗎?
set @temp1='select @value1='''',@value2='''' select @value1=@value1+'',''''''+a.name+''''+char(39)+'' [''+a.name+'']'',@value2=@value2+'',cast(''+''[''+a.name+'']''+ '' as varchar(200))'' from '+@库名+'..syscolumns a,'+@库名+'..sysobjects d where a.id=d.id and d.name='''+@表名+''''+' order by a.colorder'
exec('select * into '+@库名+'.dbo.中间表 from (select '+ @temp1+' union all SELECT '+@temp2+' FROM '+@库名+'..'+@表名+') tem3')
set @temp2='bcp '+@库名+'.dbo.中间表 out '+@路径及文件名+' -c -S'+@服务器名+' -U'+@用户名+' -P'+@密码
EXEC master..xp_cmdshell @temp2
exec('drop table '+@库名+'.dbo.中间表')
GO
exec out2xls 'daliserver','pubs','jobs','sa','element','c:\a.txt'
go
drop proc out2xls