从 @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
我想使用循环遍历数百个文件的循环进行批量插入。 但我似乎无法使用变量作为 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