2016-07-05 3 views
0

파일의 레코드 집합에 대해 BCP를 수행하려고합니다. ASCII 문자를 확장 한 레코드에서 실패합니다. 확장 ASCII 문자가있는 필드를 가져 오는 중 BCP 문제가 발생했습니다.

나는, 그러나 그것은 밖으로 작동하지 않은 명령

bcp db1.table1 in "C:\file.DAT" -T -C ACP -SMyServer\SQL2012Instance -r"\n" -t"," -b100000 -c 

내가 -C RAW와 같은 코드 페이지 옵션을 사용 했어요.

해당 기록에는 다음 오류가 표시됩니다. 이 경우 형식을 지정하는 데 도움을주십시오.

SQLState = 22001, NativeError = 0 Error = [Microsoft][SQL Server Native Client 10.0]String data, right truncation 

이 경우 형식을 지정하는 데 도움을 주시겠습니까?

+0

이 문제는 우리가 드라이버 오래된 ODBC 드라이버를 얼굴에 사용하는 ... 업데이트 ODBC 드라이버 또는 SSIS를 사용 ... –

답변

1

문제가 확인되었으며 BCP 입력 파일이 BCP 유틸리티에서 지원하는 인코딩이 아닌 UTF-8 형식임을 업데이트하고 싶습니다.

따라서 UTF-8 대신 Latin1Encoding (C#) 파일을 준비했습니다. 여전히 1 바이트의 확장 된 ASCII 문자를 보유 할 수 있습니다. 그런 다음 BCP 명령을 변경하여 BCP가 지원하는 라틴어 1 인코딩 용 코드 페이지 1252를 승인했습니다. 아래의 변경된 명령을 참조하십시오.

bcp db1.table1 in "C:\file.DAT" -T -C 1252 -SMyServer\SQL2012Instance -r"\n" -t"," -b100000 -c 

이 또한 유니 코드 문자 집합에서 파일을 준비하여이에 대한 대체 솔루션이며 명령에 -w 옵션 대신 -c를 사용할 수 있습니다.