문제

SQL Server BCP 유틸리티를 사용하여 Samba Share에서 텍스트 파일을 가져 오려고합니다. BCP는 유닉스 라인 엔딩에서 질식하고 있습니다. 유닉스 나 창에 중간 단계를 추가하여 라인 엔딩을 Windows 스타일로 변경할 수 있다고 확신합니다. 그러나 수정없이 Unix에서 파일을 가져 오는 것을 선호합니다.

SQL Server BCP에 UNIX 라인 엔딩을 찾도록 알리는 방법이 있는지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

BCP가있는 형식 파일을 사용하고 터미네이터를 n으로 지정해야합니다. 대화식 명령 줄은 항상 r에 추가되며, 여기서 형식 파일은 귀하가 지정한 내용을 정확하게 사용합니다. 참조 http://www.eggeadcafe.com/software/aspnet/32239836/bcp-out-with-char10-as-row-terminator.aspx.

형식 파일 생성은 BOL에서 잘 설명되지만 도움이 필요한 경우 원래 게시물을 주석/업데이트하십시오.

다른 팁

간단한 대답은 주석 중 하나에 언급 된 바와 같이 행 터미네이터로 16 진을 사용하는 것입니다.

-r 0x0a

rowterminator = ' n'을 설정하려고 했습니까?

BCP 명령 줄 에서이 작업을 수행 할 수 있다고 생각하지 않습니다. 그러나 다음 SQL 버전이 작동한다고 생각합니다.

DECLARE @Command nvarchar(1000)

SET @Command = N'BULK INSERT MyTable
FROM ''<path\file>''
WITH (ROWTERMINATOR = '''+CHAR(10)+''')'

exec sp_executeSQL @Command

BCP를 자세히 공부할 시간이 많지 않으면이 제품을 확인하십시오.http://msdn.microsoft.com/en-us/library/ms190759.aspx

쉬운 예제, 대화식 프롬프트가 무엇을 의미하는지 설명하고, 일단 완료되면 형식을 저장하는 옵션 (반복적으로 수행 할 경우) 등을 설명합니다.

데이터가 크거나/또는 원하는 몇 가지 파일이있는 경우 먼저 테이블을 만들면 약간의 시험 내보내기를 수행 할 수 있습니다 (BCP는 단순한 선택을 첫 번째 ARG로 선택하고 여전히 열별로 열을 선택합니다. 추가 이유가 있으면 저장된 FMT 파일을 파헤칠 수 있습니다.

예, 이건 미친 듯이요. 내 이해는 SQL Server BCP가 사용될 라인 터미네이터 전에 항상 a r을 삽입한다는 것입니다. 따라서 -R을 사용하지 않으면 n 만 사용할 것으로 예상됩니다. 그러나 그것은 ... r n을 사용할 수 있도록 어리석게 삽입 r. -r r n을 지정하면 여전히 작동하지 않습니다. 나는 그것이 r r n 라인 끝을 원하기 때문에 의심합니다. 이것은 초보자의 삶을 더 쉽게 만들고 다른 사람들에게 거의 불가능한 일을 만들기 위해 Windows World를 위해 바보 코딩의 모든 작업입니다. Sybase에서 SQL Server로 파일을 전송할 때이 문제를 경험했으며 솔루션은 Sybase (귀하가 요청대로 정확하게 작동합니다!) 및 -r n (또는 단지 DON에서 정확하게 작동합니다. SQL Server BCP의 경우 't use -r).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top