2017-02-26 2 views
1

매일 외부 원본에서 생성되는 입력 파일이 있으므로 텍스트 파일을 제어 할 수 있습니다. 파일을 SSIS에서 읽은 다음 SQL Server 2012 데이터베이스에 삽입해야합니다. 나는 하나의 특정 노선에서 발행하도록 왔습니다.텍스트 파일에서 가져 오는 SSIS의 'NUL'문자를 제거하십시오.

질문의 행은 다음과 같습니다

"|"James"|"Done"|""|""|""|"11548"|" "|""|""|""|""|""|""|""|""|""|" 

7 필드의 값은 실제로 공간 아니지만, 'NUL'문자 ASCII (0) 내가 제거 할 없는 것 같다 그것 SSIS와 함께.

null을 바꾸려면 파생 열 변환을 사용하고 있습니다. 전체 문자열의 이름은 "DataColumn"입니다. 지금까지 나는 표현식 작성기에서 다음을 시도했다. 날짜 없음으로

Replace(DataColumn, "0x0", "") 
Replace(DataColumn, "\x0000", "") 

나를 위해 일하게 될 것 같다, 그래서 어떤 제안을 크게 감상 할 수있다 : 또한

1) Replace(DataColumn, "CHAR(0)", "") 
2) Replace(DataColumn, "CHAR(0)", "\"\"") 
3) Replace(DataColumn, "ASCII(0), "") 
4) Replace(DataColumn, " ", "") 
5) Replace(DataColumn, "\x000", "") 

는 다음과 같은 제안도 시도되고있다.

+0

함수 호출을 인용하지 마십시오. 그렇게하면 'CHAR (0)'과 같은 리터럴 문자열을 찾습니다. – mroach

답변

1

REPLACE 함수를 호출 할 때 CHAR 또는 ASCII 함수에 대한 호출을 인용하지 마십시오. 인용 부호를 사용하면 REPLACE은 예를 들어 값이 CHAR(0) 인 리터럴 문자열을 찾습니다.

이 예제는 여기에 NULL 문자를

declare @str varchar(100) = 'Hello>' + char(0) + '<' 
declare @fixed varchar(100) = replace(@str, char(0), '') 

select @str, len(@str), @fixed, len(@fixed) 

(!) 참고를 제거합니다 다음 ASCII 함수는 문자에 대한 숫자 codepint을 반환, 즉하지 그래서 당신이 찾고있는 알고 있기 때문에 당신이 여기 계신 0 점의 널 문자

+0

SSIS 식 작성 도구에서 따옴표를 제거하면 "char"함수가 인식되지 않습니다. 함수 이름이 잘못되었거나 존재하지 않는다." 에러 메시지. 나는 char (0)과 CHAR (0)을 시도했다. 사이드 노트 btw를 지적 해 주셔서 감사합니다. 기억해야 할 것이 있습니다. –

+0

아, SSIS에서'CHAR '이 지원되지 않는다는 것을 몰랐습니다. 시도해보십시오 :'REPLACE (DataColumn, 0x0, '')'. 그 중 하나, 또는 검색 문자열에'\ x0000' (4 개의 0)을 사용하십시오. – mroach

+0

모두 "\ x0000" \ x0000 던져 오류 메시지. 대체 (DataColumn, "0x0", "")가 완료되었지만 원래 문제가 여전히 나타남 –

관련 문제