Reputation: 13
I would like to do a bulk insert using a loop that will cycle through several hundred files. But I can't seem to use a variable as the FROM path. Can I use FROM @PATH3 or is there another way to BULK INSERT many text files? Thank you
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
Upvotes: 0
Views: 328
Reputation: 13
Thank you so much @Jaime! This is what I ended on with the While loop.
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
Upvotes: 0
Reputation: 3015
Try with dynamic sql, something like this:
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
Upvotes: 1