日期:2014-05-19  浏览次数:20645 次

在线等待各位答复,怎么写目录名称是变量的bcp语句呢?
declare   @user   varchar(100)
declare   @pw   varchar(100)
set   @user   =   'sa '
set   @pw   =   '16898758 '
declare   @qushi   varchar(20)
declare   @sheng   varchar(20)
declare   @sql   varchar(1000)
declare   cur_qushi   scroll   cursor   for   select   distinct   区市   from   手机话段移动话段   for   read   only
open   cur_qushi
fetch   next   from   cur_qushi   into   @qushi
while   @@fetch_status   =   0
begin
set   @sql   =   'select   Col001   from   mobile.dbo.blacklist   where   left(Col001,   7)   in(select   号段   from   mobile.dbo.手机话段移动话段   where   区市   =   ' ' '   +   @qushi   +   ' ' ') '
exec   outsheng   @qushi1=@qushi,   @sheng1=@sheng   output
set   @sql   =   'bcp   " '   +   @sql   +   ' "   queryout   D:\numbers\ '+@sheng+ '\ '   +   @qushi   +   '.txt   -c   -U '   +   @user   +   '   -P '   +   @pw
exec   master..xp_cmdshell   @sql
fetch   next   from   cur_qushi   into   @qushi
end
close   cur_qushi
deallocate   cur_qushi


请大家指正,我的错误是:SQLState   =   S1000,   NativeError   =   0
Error   =   [Microsoft][ODBC   SQL   Server   Driver]无法打开   BCP   主数据文件
NULL

我的手机话段移动话段表格式为:
区号           省份           区市             号段
0510 江苏 无锡 1340000
0510 江苏 无锡 1340001
0510 江苏 无锡 1340002
0510 江苏 无锡 1340003
0510 江苏 无锡 1340004
025 江苏 南京 1340005
025 江苏 南京 1340006
025 江苏 南京 1340007
0511 江苏 镇江 1340008
我的blacklist表的格式为:
Col001
13709499546
13999045904
13566036035
13608334588
13575856588
13883743004
13977378668


------解决方案--------------------
--搞定了
--BCP不能帮你建立目录
declare @user varchar(100)
declare @pw varchar(100)
set @user = 'sa '
set @pw = '16898758 '
declare @qushi varchar(20)
declare @sheng varchar(20)
declare @mdsql varchar(1000)
declare @sql varchar(1000)
declare cur_qushi scroll cursor for select distinct 区市 from 手机话段移动话段 for read only
open cur_qushi
fetch next from cur_qushi into @qushi
while @@fetch_status = 0
begin
set @sql = 'select Col001 from mobile.dbo.blacklist where left(Col001, 7) in(select 号段 from mobile.dbo.手机话段移动话段 where 区市 = ' ' ' + @qushi + ' ' ') '
exec outsheng @qushi1=@qushi, @sheng1=@sheng output
set @mdsql = 'if not exist D:\numbers\ '+@sheng+ ' md D:\numbers\ '+@sheng
--print(@mdsql)
exec master..xp_cmdshell @mdsql
set @sql = 'bcp " ' + @sql + ' " queryout D:\numbers\ '+@sheng+ '\ ' + @qushi + '.txt -c -U ' + @user + ' -P ' + @pw
--print(@sql)
exec master..xp_cmdshell @sql
fetch next from cur_qushi into @qushi
end
close cur_qushi
deallocate cur_qushi