2011-04-05 89 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繼續前進,並將該字符串粘貼到語句本身中。

希望有所幫助。