2010-07-30 6 views
1

내 문제는 다음과 같습니다.단일 행을 여러 행으로 분할하는 SSIS

ID1, History1, ID2, History2 ... ID110, History110

각 행은 어디 역사 0과 110이있을 수 있습니다 : 나는 CSV 파일 (~ 100,000 행)의 열 형식 containting 이력 정보를 항목. 각 개별 항목은 저장 프로 시저를 호출해야합니다.

행당 가능한 항목 수가 적은 경우 스크립트를 사용하여 데이터를 변환하고 고유 한 경로로 전송하는 방법이 될 것이라고 생각합니다. 110 개의 경로를 만들면 효과가 있지만 매우 우아하지는 않습니다.

어떻게 접근하는 것이 가장 좋을까요?

+0

귀하의 질문에 완전히 의미가 분명하지 않지만, 그 SP의 경로에 저장해야 할 출력이 있다는 것을 암시하고있는 것 같습니까? 정말 원하는 출력에 따라 다릅니다. 각자 자신의 일을 요구하는 많은 입력이 있기 때문에 솔루션은 어쨌든 인간 표준에 의해 부피가 커질 것입니다. – Tobiasopdenbrouw

답변

0

데이터 (원시 csv는 변경되지 않고 파일 행당 한 행) 만 스테이징 테이블에로드하면됩니다. 그런 다음 문자열 분리자를 사용하여 스테이징 테이블 행을 분할하고 반복하는 저장 프로 시저를 호출하고 각 기록 항목에 대해 다른 프로 시저를 호출하십시오.

은 다음을 참조하십시오

Arrays and Lists in SQL Server 2005 and Beyond는이 이전 답변을 참조하십시오 스테이징 테이블없이 SSIS에서이 문제를 해결하려면 SQL comma delimted column => to rows then sum totals?

0

을, 당신은 대상 스크립트 구성 요소를 만들 수 있습니다. switch 문이나 해시 테이블을 사용하여 데이터 행에 대해 실행할 sproc을 조회 할 수 있습니다.

위의 스테이징 테이블 접근 방식이 더 나은 솔루션인지 여부는 확실하지 않습니다. 그러나 그것은 대안이다.

0

이미 답을 수락했으나 피벗 (unpivot) 작업을 사용하여 여기에서 원하는 것을 달성 할 수는 없었습니까?

관련 문제