【发布时间】:2014-12-20 18:41:25
【问题描述】:
我正在尝试创建一个从CSV 导入的存储过程。如果我有一个硬编码的文件路径,一切正常,但我想将文件路径作为参数。当我尝试 SQL Sever Management Studio 时会生成错误:
“@filePath”附近的语法不正确。
(事实上,如果我放的不是纯字符串(例如'C:'+'/dir'),就会出错。)
这是我的代码的简化版本:
Create procedure [importFile](@filePath varchar(Max))
AS
BEGIN
create table #Temp
(
row1 int,
row2 varchar(5),
row3 bit
)
BULK insert
#Temp
from @filePath
With(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
...
END
有什么解释吗?
【问题讨论】:
-
简单明了:
BULK INSERT不支持参数 - 你必须使用硬编码字符串 - 或诉诸动态 SQL将 SQL 语句构建为字符串,然后执行它
标签: sql-server tsql stored-procedures sql-server-2012 bulkinsert