相关疑难解决方法(0)

使用存储过程批量插入

我有一个工作正常的查询:

BULK INSERT ZIPCodes 
FROM  'e:\5-digit Commercial.csv' 
WITH 
( 
     FIRSTROW = 2 ,
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
)
Run Code Online (Sandbox Code Playgroud)

但现在我想为它创建一个存储过程.

我写了下面的代码来制作它的存储过程:

create proc dbo.InsertZipCode
@filepath varchar(500)='e:\5-digit Commercial.csv'
as
begin
BULK INSERT ZIPCodes 
FROM  @filepath 
WITH 
( 
     FIRSTROW = 2 ,
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
)
end
Run Code Online (Sandbox Code Playgroud)

但它显示错误:

消息102,级别15,状态1,过程InsertZipCode,行6'@ filepath'附近的语法不正确.

消息319,级别15,状态1,过程InsertZipCode,第7行关键字'with'附近的语法不正确.如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号终止先前的语句.

请告诉我我做错了什么以及如何使其在存储过程中工作.

谢谢

sql stored-procedures bulkinsert sql-server-2008

30
推荐指数
1
解决办法
5万
查看次数

如何在T-SQL中为变量插入转换变量?

以下代码给出了一个错误(它是T-SQL存储过程的一部分):

-- Bulk insert data from the .csv file into the staging table.
DECLARE @CSVfile nvarchar(255);
SET @CSVfile = N'T:\x.csv';
BULK INSERT [dbo].[TStagingTable]
-- FROM N'T:\x.csv' -- This line works
FROM @CSVfile -- This line will not work
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FIRSTROW = 2    
)
Run Code Online (Sandbox Code Playgroud)

错误是:

Incorrect syntax near the keyword 'with'. 
Run Code Online (Sandbox Code Playgroud)

如果我更换:

FROM @CSVfile
Run Code Online (Sandbox Code Playgroud)

有:

FROM 'T:\x.csv'
Run Code Online (Sandbox Code Playgroud)

......然后它很好用.

sql sql-server-2008

13
推荐指数
1
解决办法
2万
查看次数