BULK INSERT 쿼리의 LASTROW 인수를 매개 변수화하려고합니다. SQL Server로 가져올 텍스트 파일의 마지막 데이터 행에는 텍스트 파일의 행 수에 대한 정보가 들어 있습니다. 그리고이 번호를 사용하여 BULK INSERT 쿼리의 LASTROW 인수 값을 채울 계획입니다.Parameterize Microsoft SQL Server 2014에 대한 대량 삽입
TEXTFILE의 예 :
20161003|3504|1360|
20161003|3540|1441|
EOF|2
쿼리 내가 일하고 :
메시지 :
DECLARE @FilePath VARCHAR(500) SELECT @FilePath = 'C:\path\textfile.txt' DECLARE @file VARCHAR(MAX) SELECT @file = (SELECT * FROM OPENROWSET(BULK N'C:\path\textfile.txt', SINGLE_CLOB) AS Content) DECLARE @LastRow INT DECLARE @LastRow_String VARCHAR(10) SELECT @LastRow_String = (SELECT SUBSTRING(@file, CHARINDEX('EOF|', @file)+4, LEN(@file))) SELECT @LastRow = (SELECT CAST(@LastRow_String AS INT)) DECLARE @Query VARCHAR(MAX) SELECT @Query = ('BULK INSERT [Database].[dbo].[Table] FROM ''' + @FilePath + ''' WITH (FIELDTERMINATOR = ''|'', ROWTERMINATOR = ''|\n'', LASTROW = ' + @LastRow + ')')
은 내가이 오류 메시지가 위의 쿼리를 실행하면 245, 수준 16, 상태 1, 줄 11
변환 할 때 varchar 값을 변환하지 못했습니다. 'BULK IN 'FIELDTERMINATOR ='| ', ROWTERMINATOR ='| \ n ', LASTROW ='에서 데이터 유형 int로 SERT [데이터베이스]. [dbo]. [표]부터 'C : \ path \ textfile.txt'
도움을 주시면 감사하겠습니다.
LastRow는 정수입니다. Query로 연결하려면 LastRow_String을 사용해야 할 수도 있습니다. 공백이 걱정된다면, ltrim (rtrim (@LastRow_String))을 할 수있다. – Jayvee
@Jayvee That 's it! 정말 고맙습니다! –