2009-12-04 5 views
0

SSIS 패키지가 txt 파일에서 sql 데이터베이스로 가져 오기됩니다. 우리가 패키지를 만들 때 이전 파일을 사용하고 있었고 그 실행 소스는 괜찮 았습니다. 이전 소스 파일은 (10 열) 새 소스 파일에는 15 열이 있습니다. 소스 파일의 오류가 변경되었습니다. [플랫 파일 원본 [1]] 오류 : 데이터 변환에 실패했습니다. "열 10 열"의 데이터 변환은 상태 값 4와 상태 텍스트 "텍스트가 잘 렸습니다. 또는 하나 이상의 문자가 대상 코드 페이지에서 일치하지 않았습니다."를 반환했습니다. 열의 변형으로 문제가 발생했습니다. 더 나은 방법으로 문제를 해결하는 방법은 무엇입니까? 이전 및 새 형식 파일을 동일한 패키지로 처리해야하는 경우 내가 제대로 질문을 이해한다면플랫 파일의 새 구조로 SSIS 패키지가 실패 함

감사

답변

3

, 당신은 파일 당신의 플랫 파일 원본이 이전 (10 열)이 있기 때문에 하나 이전하거나 새로운 파일 형식을 가지고 실패 (I 가정 동일한 파일 이름)가 데이터 파일 스키마 만? 이 경우 부울 변수를 만들고 isOldFormat과 같은 식으로 호출합니다. 그런 다음 제어 흐름에서 스크립트 태스크를 사용하여 10 또는 15 개의 열이 있는지 판별합니다.

1) 목록 열기 플랫 파일 2) 구분 3) 조건 한 Statment에 따라 열 개수 : :

그렇지 columns.Count = 10 isOldFormat = 진정한 하면 열이면을 의사 코드는 다음과 같이 될 것이다. 카운트 = 15 isOldFormat = 거짓 그렇지 던져 오류

가 그럼 난 이제 기본적으로 두 개의 데이터가 새 파일 형식 스키마를했을 다른 데이터 흐름을 (만들 것입니다 것은 흐름-중 하나를 사용하여 이전 파일 형식 하나 새로운).

이 단계가 끝나면 스크립트 작업의 우선 순위 제약 조건을 새로 만든 데이터 흐름과 이전 데이터 흐름으로 끌어 놓습니다. predence 제약 조건을 두 번 클릭하면 Evaluator 연산 속성을 Expression으로 설정하고 Expression 컨테이너에 @isOldFormat == true를 입력하면 이전 플랫 파일 원본 및 @isOldFormat == false가 포함 된 데이터 흐름으로 이동하는 제약 조건이 참 다른 데이터 흐름의 경우 이 작업은 스크립트 작업에서 설정 한 변수를 기반으로 하나 또는 다른 데이터 흐름 만 실행합니다.

희망이 도움이됩니다.

+0

우수 아이디어에 감사드립니다. – rmdussa

관련 문제