我需要将几千个数据文件加载到SQL Server表中。 所以我编写了一个只接收一个参数的存储过程 - 文件名。 但..以下不起作用..“编译器”抱怨@FileName参数..它只需要简单的字符串..就像'file.txt'。 提前谢谢。
伊兰。
BULK INSERT TblValues
FROM @FileName
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
)
答案 0 :(得分:34)
The syntax for BULK INSERT statement是:
BULK INSERT
[ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ]
FROM 'data_file'
[ WITH
因此,文件名必须是字符串常量。 要解决此问题,请使用动态SQL:
DECLARE @sql NVARCHAR(4000) = 'BULK INSERT TblValues FROM ''' + @FileName + ''' WITH ( FIELDTERMINATOR ='','', ROWTERMINATOR =''\n'' )';
EXEC(@sql);