2011-01-10 2 views
2

일부 테이블에 구분 된 플랫 파일을로드하는 2005 SQL Server Integration Services (SSIS) 패키지가 있습니다. 매우 작은 비율의 레코드는 길이가 더 긴 텍스트 필드가 있습니다. 파일 형식 사양보다 더 길게입니다. "실제 최대 길이를 추측"하는 게임을 계속하기보다는 고객이 사양의 크기를 초과하는 부분을 자르라고 요청했습니다.SSIS : "무시 무시"을 사용하여 플랫 파일 원본에서 캡처 잘림 경고 사용

플랫 파일 원본 편집기에서 Trunctation 이벤트를 "Ignore Failure"로 설정 했으므로 추가 데이터가 필요합니다. 그러나 완전히 조용한 절사 (로그에 아무런 경고도 쓰지 않습니다) 인 것 같습니다. 어떤 데이터가 잘 렸는지에 대한 질문이 있다면 그 데이터를 식별 할 수있는 방법이 없습니다.

잘라내 기가 발생했다는 사실을 기록하는 간단한 방법은 무엇입니까?

파일에 잘린 행이 있는지 확인하는 것만으로도 충분하지만 실제로 좋은 행을 지정할 수도 있습니다. 내장 된 패키지 로깅의 일부로 캡처 되었든 특별한 호출을해야하는지는 나에게 아무런 차이가 없습니다.

답변

1

실제 삽입을 수행하기 전에 실제 필드 길이보다 긴 레코드를 가져 와서 로깅 테이블에 넣는 조건부 분할 작업이 있어야합니다. 그런 다음 데이터를 자르고 병합 또는 병합 조인 변환을 사용하여 원래 경로로 다시 조인 할 수 있습니다.

+0

동일한 솔루션의 bobs 게시글에 대한 내 회신을보십시오. – JoeG

+1

@JoeG, Yoou는 가져올 파일의 너비를 더 크게 정의합니다. 파일 연결 관리자에서 고급 탭으로 이동하십시오. 첫 번째 열을 선택하고 Shift 키를 누른 상태에서 마지막 열을 선택하십시오. 그러면 모든 항목이 선택됩니다. Output width 열을 매우 높은 값으로 변경하십시오. 기본값은 대개 입력 파일에 대해 충분히 큰 적이없는 것으로 일반적으로 50입니다. – HLGEM

+0

극단적 인 해결책은 "무한"너비의 입력 열을 가져오고 출력 열을 "무한 + 1"로 설정하여 자르지 않도록하는 것입니다. 어느 시점에서 나는 실제 한계를 설정해야하므로 실제 데이터가 더 커질 가능성이 항상 존재하므로 잘라내기를 강요합니다. 내가 찾고있는 것은 SSIS 구성 요소를 사용하여 데이터를 처리하는 방법이며 절단이 발생하면 로깅하는 것입니다. – JoeG

0

데이터 흐름의 일부로 직접 잘라낼 수 있습니다. 플랫 파일 열 너비를 예상 값보다 큰 매우 큰 값으로 설정하십시오. 조건부 분할을 사용하여 길이를 위반하는 행을 식별 할 수 있습니다.

유효하지 않은 행의 데이터 흐름 경로에서 정보를 로그에 기록 할 수 있습니다. 그런 다음 값을 유효한 길이로 변환하고 유효한 행으로 다시 병합 할 수 있습니다. 마지막으로 목적지에 행을 추가하십시오.

+0

내 문제는 내가 받고있는 파일이 공식 "최대"를 이미 위반하고 있기 때문에 "예상 값보다 큰"너비를 정의 할 수 없다는 것입니다. 따라서 솔루션을 사용하더라도 여전히 절손의 가능성을 처리해야하며이를 통해 다시 로그하는 방법을 궁금하게 생각하게됩니다. – JoeG

관련 문제