使用filename参数批量插入

Ila*_*lan 20 t-sql sql-server bulkinsert sql-server-2005 sql-server-2008

我需要将几千个数据文件加载到SQL Server表中.所以我编写了一个只接收一个参数的存储过程 - 文件名.但..以下不起作用.."编译器"抱怨@FileName参数..它只需要简单的字符串..就像'file.txt'.提前致谢.

宜兰.

BULK INSERT TblValues
FROM @FileName
WITH 
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
)
Run Code Online (Sandbox Code Playgroud)

Bog*_*ean 35

BULK INSERT语句的语法是:

BULK INSERT 
   [ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ] 
      FROM 'data_file' 
     [ WITH 
Run Code Online (Sandbox Code Playgroud)

因此,文件名必须是字符串常量.要解决此问题,请使用动态SQL:

DECLARE @sql NVARCHAR(4000) = 'BULK INSERT TblValues FROM ''' + @FileName + ''' WITH ( FIELDTERMINATOR ='','', ROWTERMINATOR =''\n'' )';
EXEC(@sql);
Run Code Online (Sandbox Code Playgroud)

  • SQL注入怎么样? (3认同)