使用filename参数批量插入

时间:2011-09-05 10:15:16

标签: sql-server sql-server-2005 tsql sql-server-2008 bulkinsert

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

伊兰。

BULK INSERT TblValues
FROM @FileName
WITH 
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
)

1 个答案:

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