2016-10-26 3 views
1

내 문제로 하루를 어둡게해서 죄송합니다.하지만 SSIS가 나를 망쳤습니다! 나는 SSIS에 익숙하지 않고 단지 오해하고있는 것처럼 보입니다.간단한 CSV 데이터 흐름에 대한 SSIS 오류

배경 : Foreach 루프 컨테이너 및 CSV 파일을 SQL Server 준비 테이블로 가져 오는 몇 개의 파생 열이있는 데이터 흐름이 포함 된 몇 가지 버전의 기본 패키지가 있습니다. 그것은 매우 간단하고 Execute SQL 작업과 File Move를 포함하지만 잘 작동합니다. Foreach 루프와 데이터 흐름에 문제가 있습니다.

나는이 패키지의 한 버전 ("A"라고 부르 자)이 잘 작동하는 것처럼 보였다. 폴더의 여러 파일을 처리하고 스테이징 테이블에 레코드를 삽입하며 SQL 문을 제대로 실행하고 파일을 아카이브로 이동합니다. 신중하게 QA'd 과정까지 모든 것이 잘 보였다. 한 파일에서 데이터를 복제하고 두 번째 소스 파일에서 데이터를 가져 오지 않았 음을 알았습니다! 그러나 두 번째/두 번째 데이터 라운드에는 두 번째 파일의 원본 파일 이름 (파생 열을 통해)이 포함됩니다 (첫 번째 파일의 데이터). 따라서 실제 데이터를 살펴보고 두 번째 소스 파일의 값이 스테이징 테이블에 기록되지 않은 것을 확인하기 전까지 두 파일을 성공적으로 처리 한 것처럼 보입니다.

이 문제를 발견하고 나면 문제는 Foreach 루프에 있었고 다른 파일 경로 & 이름 변수를 어떻게 설정했는지 알았습니다. 그래서 나는 패키지의 새로운 버전을 만들기로 결정했다. 패키지 A를 복사하고 패키지 B를 작성하기 시작했습니다. B에서 소스 연결 관리자를 삭제하고 모든 새 파일 & 경로 변수와 함께 새 연결 관리자를 만들었습니다. 그런 다음 데이터 흐름 및 Foreach 루프에서 다양한 요소를 정리/수정/대체하려고했습니다. 이 과정에서 A가 제공 한 A의 고급 매핑이 사실상 모든 문자열 (통화 및 날짜 열까지)로 설정되었음을 알았습니다. 그 말이 맞지 않아 Currency의 데이터 유형을 변경하여 각 소스 금액 열을 수정하고 각 날짜 관련 열을 데이터 유형 Date로 변경했습니다.

수십개와 수십 개의 오류가 있었고 패키지 B를 실행할 수 없습니다. 필자는 모든 B 데이터 유형을 다시 String으로 변경했습니다 (DID가 작동하는 패키지 A의 설정을 미러링). 그러나 여전히 기쁨은 없습니다.

이 나는 ​​것보다 당신의 그들을 스마트에 대한 몇 가지 질문을하는 날 리드 :

1) 당사 SSIS 적절한 데이터 형식을 사용하여 소스 CSV 데이터를 해석 할 수 있습니까? 나는. 일부 열이 명확하게 숫자, 통화 또는 날짜 인 & 일 때 모든 입력 열을 STRING으로 설정해야하는 이유는 무엇입니까? (예, 원본 CSV 파일은 매우 깨끗합니다. 대부분은 NULL을 가지고 있지 않습니다.)

a. 날짜 관련 원본 열의 고급 매핑을 날짜로 변경하면 항상 현재 오류 메시지가 나타납니다. [플랫 파일 원본 [30]] 오류 : 데이터 변환에 실패했습니다. "정산 날짜"열에 대한 데이터 변환에서 상태 값 2와 상태 텍스트 "잠재적 인 데이터 손실로 인해 값을 변환 할 수 없습니다."가 반환되었습니다.

2) 데이터 유형을 패키지 B의 문자열로 다시 설정하면 오류가 발생합니다. 일반적으로 잘림 오류가 발생합니다 (예 :이 열 중 하나에서 길이를 250으로 조정). a. 오류 메시지 : "잠재적 인 데이터 손실로 인해 값을 변환 할 수 없습니다." b. 테스트를 통해 열을 무시하도록 매핑을 재설정하면 다음 열에서 유사한 오류가 발생합니다.

3) 패키지 A가 파일의 데이터를 속이고 두 번째 파일을 처리하지 않고 오류가 발생하지 않고 보관 처리로 이동하는 이유는 무엇입니까?

4) 데이터 뷰어에서 구문 분석 오류 (잘못된 열에 데이터가 표시됨)가 나타나는 이유는 무엇입니까?하지만 데이터 뷰어에서 데이터 복사 기능을 사용하여 Excel에 붙여 넣으면 모든 데이터 행이 완벽하게 위로 올라갑니다 ?

5) 신참 SSIS 사용자가 이해해야하는 팁이 있습니까?이 사이트뿐만 아니라 문서 및 검색 웹 기사를 통해 명확하지 않을 수도 있습니다.

도움이 될만한 자세한 정보를 제공 할 수 있지만이 패키지는 실제로 매우 간단하며 이로 인해별로 좌절하지 않아야합니다.

통찰력을 얻으려면 고맙습니다.

DGP

+0

정확히 같은 순서로 정확히 동일한 데이터 유형으로 폴더의 모든 파일이 동일한 열을 포함합니까? –

답변

0

감사 탭 & 샤힌, 모든 SSIS 신인으로

- 내 실수로부터 배우십시오!

실제로 문제는 연결 관리자에서 어떻게 텍스트 규정자를 식별했는지 나타납니다. 나는 ""라고 입력했는데 내 열이 어떻게 파싱되는지에 문제가있었습니다. 구문 분석 문제로 인해 일부 열에 예기치 않은 값이 표시되어 패키지의 오류가 발생했습니다. "- - 난 단지 ONE 따옴표로 텍스트 한정자를 변경했을 때

! 내가 언급 한 바와 같이 모든 것은

일 -와 샤힌 의심로 - 중복 처리 내 초기 문제 때문에 방법에 아마이었다 내가 설정 foreach는 루프. 난 이미 내가 텍스트 한정자를 고정 할 때까지, 비트가 여전히 오류를 얻는 것을 고정했다.

난 단지 그것을 몇 번 테스트 한하지만 문제처럼 보이는.

감사합니다 기부금은

입니다.

DGP

+0

배우는 교훈은 : 압도 당하지 않도록 노력하십시오. 문제를 해결할 때 기본 사항으로 돌아가서 한 가지 작업 만 수행하고 작동하는지 확인하는 새로운 패키지를 만듭니다. SSIS는 자세한 오류로 인해 압도적 일 수 있으며 메타 데이터 및 데이터 유형에 대해 매우 까다 롭지 만 좋은 이유는 더 많은 문제를 줄여줍니다. –

관련 문제