2016-03-28 78 views
1
DECLARE @SQL_BULK VARCHAR(MAX) 

SET @SQL_BULK = 'BULK INSERT [dbo].[Table] 
       FROM ''' + @BatchFileName + ''' 
       WITH 
       (
        FIRSTROW = 2, 
        FIELDTERMINATOR = ''\t'', 
        ROWTERMINATOR = ''0x0a'' 
       )' 

EXEC (@SQL_BULK) 

我有这段代码来做批量加载。工作正常,但我想有@BatchFileName也在那里作为一列(每行包含相同的值)。SQL Server中批量加载时插入文件名

这是可能在批量加载过程中吗?或者我以后如何在单独的函数中添加它?

在此先感谢

回答

2

我使用这个脚本在目录遍历和bulkinsert文件:

create table #x (name varchar(200)) 
DECLARE @query varchar (1000),@conta int ,@query2 varchar (1000),@NOME varchar(50) 
set @conta=1 
set @query ='master.dbo.xp_cmdshell "dir '+'C:\directoryname'+'*.csv' +' /b"' 
insert #x exec (@query) 
delete from #x where name is NULL 
select identity(int,1,1) as ID, name into #y from #x 
drop table #x 
WHILE @conta<221 --number of files 

BEGIN 
SELECT @NOME=name FROM #y WHERE [email protected] 
set @Query2 ='BULK INSERT [dbo].[tablename] FROM '+ '''C:\directoryname'[email protected]+''' 
    WITH (
FIELDTERMINATOR = '','',ROWTERMINATOR = ''0x0a'')' 
SELECT @query2 
exec (@Query2) 

set @[email protected]+1 

END 
drop table #y