> 데이터 베이스 > MySQL 튜토리얼 > SQL Server 대량 삽입 저장 프로시저에서 ''@filepath' 근처의 잘못된 구문' 오류를 수정하는 방법은 무엇입니까?

SQL Server 대량 삽입 저장 프로시저에서 ''@filepath' 근처의 잘못된 구문' 오류를 수정하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-29 04:10:13
원래의
471명이 탐색했습니다.

How to Fix

저장 프로시저를 통한 대량 삽입: 오류 해결

작업 중인 대량 삽입 쿼리를 저장 프로시저로 캡슐화하려는 시도에서 사용자가 BULK INSERT 문 내에서 파일 변수를 활용할 때 오류가 발생합니다. 사용자의 저장 프로시저 코드는 다음과 같습니다.

create proc dbo.InsertZipCode
@filepath varchar(500)='e:-digit Commercial.csv'
as
begin
BULK INSERT ZIPCodes 
FROM  @filepath 
WITH 
( 
     FIRSTROW = 2 ,
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
)
end
로그인 후 복사

그러나 이 코드로 인해 다음과 같은 오류가 발생했습니다.

Msg 102, Level 15, State 1, Procedure
InsertZipCode, Line 6 Incorrect syntax
near '@filepath'.

Msg 319, Level 15, State 1, Procedure
InsertZipCode, Line 7 Incorrect syntax
near the keyword 'with'. If this
statement is a common table
expression, an xmlnamespaces clause or
a change tracking context clause, the
previous statement must be terminated
with a semicolon.
로그인 후 복사

이 문제의 핵심은 BULK INSERT를 수행할 수 없다는 것입니다. 파일 이름을 변수로 허용합니다. 다음과 같은 문은 유효합니다.

BULK INSERT ZIPCodes 
FROM  'e:-digit Commercial.csv' 
WITH 
로그인 후 복사

BULK 내에서 파일 이름 변수(예: DECLARE @filename VARCHAR(255) SET @filename = 'e:5-digit Commercial.csv') 사용 INSERT 문은 필연적으로 실패합니다.

이 문제를 해결하기 위해 실행 가능한 한 가지 접근 방식은 BULK를 구성하는 것입니다. INSERT 문을 문자열(고정된 파일 이름 포함)로 만들고 sp_executesql을 사용하여 동적으로 실행합니다.

DECLARE @filepath nvarchar(500)
SET @filepath = N'e:-digit Commercial.csv'

DECLARE @bulkinsert NVARCHAR(2000)

SET @bulkinsert = 
       N'BULK INSERT ZIPCodes FROM ''' + 
       @filepath + 
       N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'

EXEC sp_executesql @bulkinsert
로그인 후 복사

이러한 지침을 준수하면 BULK INSERT에서 파일 이름 변수를 허용할 수 없는 문제를 피할 수 있습니다. 대량 삽입을 실행하는 저장 프로시저의 성공적인 생성.

위 내용은 SQL Server 대량 삽입 저장 프로시저에서 ''@filepath' 근처의 잘못된 구문' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿