我正在尝试进行批量插入,但@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
)