我正在尝试开发一个可处理将文件批量插入给定表的应用程序。文件的路径可能会有所不同,因此我想开发一个存储的proc,以供我调用并传递该路径。
以下方法效果很好
BULK INSERT [dbo].[tblUTAClockExport]
FROM '\\warhawk\C$\test\clock_export_20180922.csv'
WITH (FIELDTERMINATOR = ',' );
...但是我不能用参数替换路径。失败:
declare @fname as varchar(200);
set @fname = '\\warhawk\C$\test\clock_export_20180922.csv';
BULK INSERT [dbo].[tblUTAClockExport]
FROM @fname
WITH (FIELDTERMINATOR = ',' );
有什么建议可以解决吗?
答案 0 :(得分:0)
您可以尝试使用命令创建字符串,然后使用EXEC执行:
declare @fname as varchar(200);
declare @command as varchar(max);
set @fname = '\\warhawk\C$\test\clock_export_20180922.csv';
set @command = 'BULK INSERT [dbo].[tblUTAClockExport]'
+' FROM '+char(39)+@fname+char(39)
+' WITH (FIELDTERMINATOR = '+char(39)+','+char(39)+' );'
EXEC(@command)