使用文件名参数进行批量插入

29

我需要将几千个数据文件加载到SQL Server表中。因此,我编写了一个存储过程,只接收一个参数-文件名。但是...以下代码不起作用。 "编译器" 抱怨 @FileName 参数...它只想要纯字符串,如'file.txt'。谢谢。

Ilan。

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

你是在寻找纯 SQL 解决方案,还是可以使用 C# / VB? - Paul Alan Taylor
谢谢Paul!我已经找到了一些东西 https://dev59.com/xm855IYBdhLWcg3w-JbS - Ilan
@IIan,如果你有答案,请关闭问题,并在提问前搜索类似的问题。 - Ash Burlaczenko
1个回答

45

BULK INSERT语句的语法如下:

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

1
我就是这样做的。谢谢!https://dev59.com/xm855IYBdhLWcg3w-JbS - Ilan
5
SQL注入问题怎么处理? - user441365

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接