在sql server2000里面我写了一个过程,可不知道为什么出错误了
目的是为了批量读取1-29张文本文件(.txt)
declare @i int
declare @str varchar(2000) 
set @i=1
set @str='c:\'+@i+'txt'      //这边是错误的
while @i<30
beginbulk insert cdr10001 from @str   //因赋值是错的,改成bulk insert cdr10001 from 'c:\1.txt'就可以
 with(
   FIELDTERMINATOR=',',
   ROWTERMINATOR='\n'
)
set @i=@i+1
end我想肯定是语法错误了,可真不知道怎么改

解决方案 »

  1.   

    declare @i int
    declare @str varchar(2000) 
    set @i=1
    set @str='c:\'+@i+'.txt'      //这边是错误的
    while @i<30
    beginbulk insert cdr10001 from @str   //因赋值是错的,改成bulk insert cdr10001 from 'c:\1.txt'就可以
     with(
       FIELDTERMINATOR=',',
       ROWTERMINATOR='\n'
    )
    set @i=@i+1
    end用EXEC 执行
      

  2.   

    set @str='c:\'+CAST(@i AS VARCHAR)+'.txt'
      

  3.   

    给你个例子
    c盘文件:
    1,DSJ-120,电视机,1865.00,15
    2,DSJ-180,电视机,2073.00,10
    3,XYJ-13,洗衣机,486.00,20
    4,XYJ-20,洗衣机,873.00,12
    5,DBX-134,电冰箱,1456.00,8
    6,DSJ-340,电视机,3726.00,5
    7,WBL-6,微波炉,640.00,10
    8,KTQ-12,空调器,2800.00,12
    SQL:CREATE TABLE TESTBLUK
    (
    TID INT  PRIMARY KEY,
    TCODE VARCHAR(200),
    TNAME varchar(100),
    PRICE DECIMAL,
    TCOUNT INT
    )--FIELDTERMINATOR列分隔符  ROWTERMINATOR 行分隔符
    BULK INSERT TESTBLUK FROM 'c:\Demo.txt' WITH (FIELDTERMINATOR = ',',ROWTERMINATOR = '\n') 
    select * from TESTBLUK 
      

  4.   

    楼上的,用exec就有用吗?可是我直接改成bulk insert cdr10001 from 'c:\1.txt'也会执行呀!所以好像跟exec没多大关系吧
    而且也提示语法错误
      

  5.   

    declare @i int
    declare @str varchar(2000)  
    set @i=1
    set @str='c:\'+LTRIM(@i)+'.txt'
    while @i<30
    beginexec('bulk insert cdr10001 from '''+@str+''' with(
      FIELDTERMINATOR='','',
      ROWTERMINATOR=''\n''
    )')
    set @i=@i+1
    end