4864: Bulk load data conversion error (type mismatch or invalid character) (대량 로드 데이터 변환 오류)
SQL Server의미
대량 로드(BULK INSERT, bcp 또는 OPENROWSET(BULK...)) 중 소스 파일의 필드를 대상 컬럼의 데이터 타입으로 변환할 수 없었다. 보고된 행/컬럼의 데이터가 예상 타입과 일치하지 않는다.
원인
소스 데이터 파일의 값이 대상 컬럼 타입에 맞지 않는다: 숫자 컬럼의 텍스트, 잘못된 날짜 형식, 예상치 못한 소수점/천 단위 구분자, 잘못된 문자 인코딩(UTF-8/UTF-16), 또는 잘못된 필드/행 종결자로 인한 컬럼 밀림. 헤더 행을 건너뛰지 않는 것도 흔한 원인이다.
해결 방법
오류가 보고한 행과 컬럼으로 가서 소스 데이터를 확인한다. 필드(FIELDTERMINATOR)와 행(ROWTERMINATOR) 종결자를 파일에 맞추고, FIRSTROW=2로 헤더 행을 건너뛴다. 올바른 코드 페이지/인코딩을 위해 CODEPAGE 또는 DATAFILETYPE을 설정한다. 날짜/숫자 형식을 대상 타입과 호환되게 한다. format file을 사용하면 매핑이 안정적이다.
같은 데이터베이스의 다른 항목
- 15138The database principal owns a schema in the database, and cannot be dropped (database principal이 스키마를 소유하고 있어 삭제 불가)
- 1934INSERT/UPDATE failed because the following SET options have incorrect settings (다음 SET 옵션의 설정이 잘못되어 INSERT/UPDATE 실패)
- 468Cannot resolve the collation conflict
- 916The server principal is not able to access the database under the current security context (서버 보안 주체가 현재 보안 컨텍스트에서 데이터베이스에 접근할 수 없음)