2013-03-28 119 views
0

在下面的C#代码时:语法错误定义BULK INSERT参数

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参数?

回答

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

我不需要FIELDTERMINATOR,因为它只有一个列数据,并且谢谢你做到了! – user1590636 2013-03-28 00:21:36