".dat"확장명을 가진 소스 파일을 가지고 있으며이를 SSMS의 테이블로로드하려고합니다. 아래 코드는 여기입니다 :대량 삽입 오류가 발생했습니다
하지만 다음과 같은 오류가 있습니다. 메모장에 파일을 열어서 LF 인 ROWTERMINATOR를 확인했습니다.
메시지 4866, 수준 16, 상태 8, 줄 34 대량로드에 실패했습니다. 열이 1 행 25 열의 데이터 파일에서 너무 깁니다. 필드 종결 자 및 행 종결자가 올바르게 지정되었는지 확인하십시오. 메시지 7301, 수준 16, 상태 2, 수준 16, 연결된 서버 "(null)"의 OLE DB 공급자 "BULK"에서 필요한 인터페이스 ("IID_IColumnsInfo")를 가져올 수 없습니다.
코드 : 아래
USE myDB
GO
CREATE TABLE [dbo].[myTable]
(
Column1 NVARCHAR(255) NULL,
Column2 NVARCHAR(255) NULL,
Column3 NVARCHAR(100) NULL,
Column4 NVARCHAR(255) NULL,
Column5 NVARCHAR(255) NULL,
Column6 NVARCHAR(255) NULL,
Column7 NVARCHAR(255) NULL,
Column8 NVARCHAR(255) NULL,
Column9 NVARCHAR(255) NULL,
Column10 NVARCHAR(255) NULL,
Column11 NVARCHAR(255) NULL,
Column12 NVARCHAR(255) NULL,
Column13 NVARCHAR(255) NULL,
Column14 NVARCHAR(255) NULL,
Column15 NVARCHAR(255) NULL,
Column16 NVARCHAR(255) NULL,
Column17 NVARCHAR(255) NULL,
Column18 NVARCHAR(255) NULL,
Column19 NVARCHAR(255) NULL,
Column20 NVARCHAR(255) NULL,
Column21 NVARCHAR(255) NULL,
Column22 NVARCHAR(255) NULL,
Column23 NVARCHAR(255) NULL,
Column24 NVARCHAR(255) NULL,
Column25 NVARCHAR(255) NULL
);
BULK
INSERT [dbo].[myTable]
FROM 'C:\Users\John\Documents\work\MyFile.dat'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
);
SELECT * FROM [dbo].[myTable]
데이터의 샘플이며, 이들은 매우 SSMS가 실패한 것을 행 :
Kansas City 1 494124 20 McDonalds KANSAS CUSTOMERS 22 WYANDOTTE COUNTY 239 Wyandotte County 964 S 73RD ST KANSAS CITY KS 66111 2805 Y Y Y N N 4 D Old School Loyal N 49412401
인 것처럼 보입니까? 줄 끝 글자를 확인할 수 없습니까? 그것은 cr-lf 일 것입니다. (\ r \ n) – dbmitch
그렇습니다. 행 착수 기는 '\ n'인 LF이지만 '\ r \ n'도 시도했습니다. – enigma6205
데이터의 샘플 행은 무엇입니까? 데이터에 몇 개의 열이 있습니까? 그것은 9보다 많거나 적습니까? – dbmitch