2011-04-13 4 views
0

2008 SSIS 패키지의 플랫 파일 대상에 쓰고 있습니다. 99.99 %가 올바르게 작동합니다. 그러나 대상 파일에 하나의 중복 레코드가 생깁니다.
1. 읽기이 ISO-8859-1 인코딩 된 파일은
2.에 메모리에 함께 두 개의 파일을 결합하고로드 메모리에 UTF8에 자신의 텍스트를 인코딩 : 여기 SSIS의 중복 레코드 플랫 파일 대상

패키지의 기본 흐름이다 조회 캐시
3. 디스크에서 다른 소스 파일을 읽습니다.
4. 소스 파일의 ID 열과 조회 캐시의 ID 열을 일치시킵니다.
5. ID가 조회 캐시의 ID와 일치하면 일치하는 파일이 일치하지 않으면 다른 파일에 쓰기

모든 것이 작동합니다. 처음부터 끝까지. 그러나 경기 기록에 중복 기록이 있습니다. 나는 그들이 중복 될 때 조회 캐시 텍스트 파일의 파일 끝 (또는 다른) 특수 문자로 인해 중복이 발생했다고 의심하기 시작했다. 이러한 파일은 UNIX 시스템에서 생성됩니다 (그러나 읽으면 UTF8로 인코딩됩니다). 중복 레코드는 매번 동일한 레코드입니다. 복제본을 가져 오지 못하게하려면 어떻게해야합니까? (또는 복제본의 출처를 파악하십시오.) 목적지에 합법적 인 중복이 있기 때문에 중복 제거를 사용할 수 없습니다. 나는 이것을 몇 주 동안 알아 내려고 노력해왔다.

+0

현재 이론은 SSIS 조회 캐시가 플랫 파일 원본에서 250,000 개가 넘는 레코드를 처리 할 수 ​​없다는 것입니다. 나는 그것이 소스 (또는이 라인을 따라 무언가)로부터 다시 읽는 것을 생각하고 그것이 이것을 할 때 중복을 생성하고 있다고 생각한다. 원본에서 중복 된 행을 제거하여이를 테스트했습니다. 그런 다음 다른 레코드를 복제합니다. 그런 다음 전체 행 수가 약 250,000 개로 줄었고 중복 된 항목이 없습니다. 나는이 프로세스를 약 10 회 실행했으며 250,000 개 미만의 소스 레코드로 어떤 복제본도 얻지 못했습니다. 다른 제안 사항이 있으십니까? –

답변

1

문제점을 파악했습니다. 그 행을 제거했을 소스를 읽을 때 필드를 빈 문자열로 설정하지 않았습니다. 그런 다음 해당 행이 조회 변환에서 임의의 행과 일치하고 대상을 통해 계속 쓰여지고 있습니다.

1

데이터를 스테이징 테이블에 배치하는 것으로 시작하여 쿼리 할 수있는 테이블. 어쩌면 당신은 어떻게 합쳐져서 복제본을 얻을 수 있는지 볼 수 있습니다. 또한, 당신은 유효한 opnes가있는 경우에 이것이 유효하지 않은 복제인지 어떻게 알 수 있습니까? 무엇이 잘못 되었습니까?

+0

좋은 해결책 HLGEM. 첫 번째 단계가 도움이됨에 따라 준비 테이블에 데이터를 저장하는 것이 좋습니다. 스테이징 테이블에는 모든 VARCHAR/NVARCHAR 컬럼이 있습니다. 데이터 유형 변환 또는 복제로 추가 처리에 문제점이있는 경우 스테이징 테이블에 대해 일반 SQL 문을 실행하여 쉽게 찾아 낼 수 있습니다. – thomasswilliams

+0

답변 해 주셔서 감사합니다. 테이블에 쓰기는 옵션이 아닙니다. 테스트 테이블을 만들 수있는 능력이 없습니다. 결과를 확인하기 위해 파일에 기록했습니다. 나는 그 복제본이 두 가지 이유로 무효라는 것을 알고 있습니다. 첫째, 이전 메인 프레임 프로세스에는없는 추가 레코드입니다. 또한 소스 파일에는 103 개의 ID가 있고 새 파일에는 104 개의 ID가 있습니다. –

관련 문제