批量插入:FROM <filepath>是否可以被参数化?

时间:2018-09-21 22:40:14

标签: sql tsql sql-server-2012

我正在尝试开发一个可处理将文件批量插入给定表的应用程序。文件的路径可能会有所不同,因此我想开发一个存储的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 = ',' );

有什么建议可以解决吗?

1 个答案:

答案 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)