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

在导出sqlserver 数据库中的表项时,如果设置备份地址
本帖最后由 qingcai5647 于 2009-12-04 16:13:06 编辑
使用sql server 2000 需要导出数据库中的某个表项,因为每周都需要执行一次导出
所以希望能自动执行导出
sqlserver提供的数据导出只能向一个文件里面重复写入信息

今天查了下资料
EXEC master..xp_cmdshell 'bcp mysql.dbo.test1 out c:\temp1.xls -c -q -S"MICROSOF-8B342F" -U"sa" -P"xucheng"'
这串代码表示将表test1导出到c:\temp1.xls

下面这串代码是今天问群里面一朋友给的
declare @filename nvarchar(100) 
set @filename=replace(replace(replace(replace(CONVERT(char(16), getdate(), 120 ),'-',''),'',''),':',''),' ','') +'.xls'
print @filename 

表示按照当前系统时间命名

请问下 把这两串结合起来该怎么写,T-sql代码,能实现每次对表项导出时,以当前系统时间自动命名!
------解决方案--------------------
动态表名就行了.
declare @filename nvarchar(100)
set @filename=replace(replace(replace(replace(CONVERT(char(16), getdate(), 120 ),'-',''),'',''),':',''),' ','') +'.xls' 

declare @cmd nvarchar(4000);

set @cmd = 'bcp mysql.dbo.test1 out c:\' + @filename + ' -c -q -S"MICROSOF-8B342F" -U"sa" -P"xucheng"';

exec xp_cmdshell @cmd;