为BULK INSERT定义参数时出现语法错误

时间:2013-03-28 00:12:42

标签: c# sql sql-server-2008 sql-server-2008-r2 sql-server-2012

在以下C#代码中:

string filePath = @"C:\Users\Me\Documents\note.txt"
var SqlSaveCommand = new SqlCommand(@"BULK INSERT table FROM @filepath", con);
SqlSaveCommand.Parameters.Add(new SqlParameter("@filepath", filePath));

执行sql命令时,@filepath附近出现语法错误。

但是,以下操作按预期工作:

BULK INSERT proxylist FROM 'C:\Users\Me\Documents\note.txt'

在指定@filepath参数时我做错了什么?

1 个答案:

答案 0 :(得分:2)

您无法参数化BULK INSERT的路径。如果您说:

,您将在Management Studio中看到相同的错误
BULK INSERT dbo.tablename FROM @wherever...

通常您还需要一些WITH选项,例如指定ROWTERMINATOR, FIELDTERMINATOR等。

为什么不在程序中构建整个命令?

string filePath = @"C:\Users\Me\Documents\note.txt"
string cmd = @"BULK INSERT proxylist FROM '" + @filepath + "';";
var SqlSaveCommand = new SqlCommand(cmd, con);