从 @path 批量插入 Tbl

Bulk INSERT Tbl From @path

我想使用循环遍历数百个文件的循环进行批量插入。 但我似乎无法使用变量作为 FROM 路径。 我可以使用 FROM @PATH3 还是有另一种方法来 BULK INSERT 许多文本文件? 谢谢

Begin
declare @days as varchar(2) = '06'
declare @path1 varchar(28) ='E:\WorkingTkr Data\_GDPD_02-'
declare @path2 varchar(9) ='-2020.trk'
declare @path3 varchar(40) = @path1+@days+@path2
--print (@path3)
bulk insert [dbo].[GDPD_Trk]
from @path3
WITH 
  (
    FIELDTERMINATOR = ' ', 
    ROWTERMINATOR = '\n' 
  )
  End

试试动态 sql,像这样:

BEGIN
  declare @days as varchar(2) = '06'
  declare @path1 varchar(28) ='E:\WorkingTkr Data\_GDPD_02-'
  declare @path2 varchar(9) ='-2020.trk'
  declare @path3 varchar(40) = @path1+@days+@path2
          
  declare @sqlBulk varchar(max) = 
'bulk insert [dbo].[GDPD_Trk] ' + char(13) +
'from ''' + @path3 + '''' + char(13) + 
'with' + char(13) +
'(' + char(13) +
'  FIELDTERMINATOR = '' '',' + char(13) +  
'  ROWTERMINATOR = ''\n''' + char(13) +
')'
        
  exec (@sqlBulk)
END

非常感谢@Jaime!这就是我用 While 循环结束的结果。

declare @Count INT = 1
  declare @days as varchar(2)
  declare @path1 varchar(28) ='E:\WorkingTkr_Data\_JCSO_06-'
  declare @path2 varchar(9) ='-2021.trk'
 WHILE (@Count <32)
 BEGIN
 IF @Count<10
Begin
  set @days = '0'+convert(varchar,@Count)
  SET @Count = @Count + 1
End
Else
begin
  set @days = convert(varchar,@Count)
  SET @Count = @Count + 1
end
  declare @path3 varchar(40) = @path1+@days+@path2
          
  declare @sqlBulk varchar(max) = 
'bulk insert [dbo].[Trk_HeatMap] ' + char(13) +
'from ''' + @path3 + '''' + char(13) + 
'with' + char(13) +
'(' + char(13) +
'  FIELDTERMINATOR = '' '',' + char(13) +  
'  ROWTERMINATOR = ''\n''' + char(13) +
')'
        
  exec (@sqlBulk)
END