有如下bulk insert语句,一次只能操作一个数据文件file01.txt:BULK INSERT DBname
   FROM 'D:\datadir\file1.txt'
   WITH
     (
        FIELDTERMINATOR =',',
        ROWTERMINATOR = '\n'
      )需求要求助的问题是 D:\datadir 目录下有多个文件file01.txt~file20.txt,难道需要操作20次吗?
是否有其它方法,或者可以指定目录导入的方法,我把所有文件都归到该目录下?求指导~insertbulk

解决方案 »

  1.   

    写个存储过程循环,或者使用ssis循环该目录。
      

  2.   


    declare @i int --计数
    declare @size int  --计数范围declare @s varchar(8000) 
    set @i=1
    set @size=20
    while @i<=@size 
    beginset  @s='bulk insert DBname from '+ '''D:\datadir\file'+@i+'.txt'' WITH ( FIELDTERMINATOR = '','', ROWTERMINATOR =''\n'')'
    exec(@s)
    set @i=@i+1  
    end
      

  3.   

    也可以先在dos下copy /b +的方法把文件合并为1个大文件
      

  4.   

    方法1、用动态语句拼接执行,如2楼的方式,但是是否能执行我就没试过了。
    方法2、借用cmd或者powershell,遍历这个文件夹下的文件,然后循环执行。
    方法3、自己用.net或者其他语言写个程序,其实核心还是遍历并执行insert
      

  5.   

    拼出一堆带换行的bcp语句,右键复制到cmd里,就会挨个跑了
      

  6.   

    谢谢各位帮忙,问题已经解决,i要做一个类型转换cast(@i as varchar)就OK了