日期:2014-05-18  浏览次数:20486 次

批量导入CSV文件
批量导入CSV文件,出错

set   nocount   on
declare   @sql   varchar(2000),@id1   int,@id2   int
create   table   #T   (id   int   identity(1,1),col   varchar(500))
insert   into   #T   exec   master..xp_cmdshell   'dir   e:\1004\*.csv '  
delete   from   #T   where   col   not   like   '%.csv% '   or   col   is   null   or   substring(col,37,2) <> '91 '
update   #T   set   col=replace(col,left(col,36), ' ')
select   *   from   #T

select   @id1=min(id),@id2=max(id)   from   #T
while   @id1 <=@id2
begin
select   @sql= 'bcp   sxl..zcfzb   in   e:\1004\ '+col+ '   -c   -q   -S "SXL100 "   -U "sa "   -P " " '
from   #T   where   id=@id1
set   @id1=@id1+1
exec   master..xp_cmdshell   @sql
end


提示:
NULL
开始复制...
SQLState   =   S1000,   NativeError   =   0
Error   =   [Microsoft][ODBC   SQL   Server   Driver]在   BCP   数据文件中遇到的意外的   EOF
NULL
已复制了   0   行。
数据包的大小(字节):   4096
时钟时间(毫秒):   共             1
NULL


------解决方案--------------------
bcp:
select @sql= 'bcp sxl..zcfzb in e:\1004\ '+col+ ' -c -q -S "SXL100 " -U "sa " -P " " '
这句好像有问题,col是变量还是要为@sql赋值?

bulk
exec master..xp_cmdshell 'BULK INSERT zcfzb FROM e:\1004\ '+col+ ' WITH(FIELDTERMINATOR = ', ') '
应该为
exec master..xp_cmdshell 'BULK INSERT zcfzb FROM e:\1004\ '+col+ ' WITH(FIELDTERMINATOR = ' ', ' ') ',col同上