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

bulk insert 多个文件
有如下bulk insert语句,一次只能操作一个数据文件file01.txt:

BULK INSERT DBname
   FROM 'D:\datadir\file1.txt'
   WITH
     (
        FIELDTERMINATOR =',',
        ROWTERMINATOR = '\n'
      )

需求要求助的问题是 D:\datadir 目录下有多个文件file01.txt~file20.txt,难道需要操作20次吗?
是否有其它方法,或者可以指定目录导入的方法,我把所有文件都归到该目录下?

求指导~
insert bulk

------解决方案--------------------
写个存储过程循环,或者使用ssis循环该目录。
------解决方案--------------------

declare @i int --计数
declare @size int  --计数范围

declare @s varchar(8000) 
set @i=1
set @size=20
while @i<=@size 
begin

set  @s='bulk insert DBname from '+ '''D:\datadir\file'+@i+'.txt'' WITH ( FIELDTERMINATOR = '','', ROWTERMINATOR =''\n'')'
exec(@s)
set @i=@i+1  
end

------解决方案--------------------
方法1、用动态语句拼接执行,如2楼的方式,但是是否能执行我就没试过了。
方法2、借用cmd或者powershell,遍历这个文件夹下的文件,然后循环执行。
方法3、自己用.net或者其他语言写个程序,其实核心还是遍历并执行insert
------解决方案--------------------
拼出一堆带换行的bcp语句,右键复制到cmd里,就会挨个跑了