2011-04-05 91 views
0

我使用SP下面的代码,SQL Server 2005中错误读数CSV文件

declare @path varchar(500) 
set @path = 'E:\Support\test.csv'; 
print @path 
Create table #mytable( 
name varchar(max), class varchar(max), roll varchar(max) 
) 

BULK INSERT #mytable FROM @path 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
); 
Go 
select * from #mytable 

drop table #mytable 

但它抛出以下错误:

Msg 102, Level 15, State 1, Line 8 
Incorrect syntax near '@path'. 
Msg 319, Level 15, State 1, Line 9 
Incorrect syntax near the keyword 'with'. 
If this statement is a common table expression or an xmlnamespaces clause, 
the previous statement must be terminated with a semicolon. 
Msg 208, Level 16, State 0, Line 1 
Invalid object name '#mytable'. 

任何人可以帮助我。

回答

0

你不能做以下

BULK INSERT #mytable FROM @path 

如果你期望这个翻译成

这不是文件名,这是在VARCHAR,SQL看到它@Path 为数据而不是包含路径的字符串。

如果你需要使用一个变量的路径,你将需要使用一些动态SQL这大致翻译(借口语法错误)

DECLARE @SQL varchar(max) 
SET @SQL = 'BULK INSERT #mytable FROM '+ @path + ' 
--Add the rest of your code here 

EXEC (@SQL) 

如果你的变量是永远不会改变,虽然我” d继续前进,并将该字符串粘贴到语句本身中。

希望有所帮助。