错误读数CSV文件
问题描述:
我使用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'.
任何人可以帮助我。
答
你不能做以下
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继续前进,并将该字符串粘贴到语句本身中。
希望有所帮助。