BULK INSERT 명령을 사용하여 데이터 대량 삽입을 위한 저장 프로시저를 생성하려고 하면 오류가 발생할 수 있습니다. 저장 프로시저의 파일 이름 매개 변수에 파일 경로 변수를 할당하려고 하면 이러한 오류 중 하나가 발생합니다.
일반적인 BULK INSERT 쿼리에서는 파일 경로를 문자열로 지정하면 올바르게 작동합니다.
BULK INSERT ZIPCodes FROM 'e:-digit Commercial.csv' WITH ( FIRSTROW = 2 , FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' )
그러나 변수 파일 경로를 사용하여 저장 프로시저를 생성하려고 하면 다음과 같은 문제가 발생할 수 있습니다. 오류:
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
'@filepath' 및 'with' 근처의 잘못된 구문
이 오류는 BULK INSERT 명령이 파일 경로를 변수로 지원하지 않기 때문에 발생합니다. 이 문제를 해결하려면 다음 중 하나를 수행하세요.
동적 SQL을 사용하여 BULK INSERT 구축 명령문
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
이 접근 방식을 사용하면 대량 삽입에 저장 프로시저를 활용하면서 다양한 파일 경로를 사용할 수 있는 유연성을 유지할 수 있습니다.
위 내용은 가변 파일 경로를 사용할 때 대량 삽입 저장 프로시저 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!