BULK INSERT在SET语句中具有可变文件名



我正在尝试进行批量插入,但@CSVPath没有解析。

declare @path varchar(255) 
set @path = 'CCSVPath.csv'; 
BULK INSERT #mytable FROM @CSVPath <-- Error line
WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = 'n' ); 

我试过了

FROM ''' + @CSVpath + '''

如果我硬编码的路径,它工作。如果我把它全部包装在SET语句中并执行,它就可以工作了。

declare @sql varchar(max)
set @sql = 'BULK INSERT #mytable FROM ''' + @CSVPath + ''' WITH ...
exec (@sql)

然而,我不能这样做,需要它的第一个方法,但它似乎没有解决,不知道如何让它工作。

当运行动态查询时,编译器存储变量的值,但通常不通过变量命名表或地址。

BULK INSERT #mytable
FROM 'C:test.csv'
WITH
(
FIRSTROW = 2, -- as 1st one is header
FIELDTERMINATOR = ',',  -- field delimiter
ROWTERMINATOR = 'n',   -- next row
TABLOCK
)

最新更新