-1

enter image description here에, 나는 OLDEDB에 모든 데이터를 전송합니다. 하지만 다른 테이블에 데이터를 나누고 싶습니다.

플랫 파일 소스 내 플랫 파일 원본에서</p> <p>SSIS

예.
표 1은 처음 % F에서 시작하고 col [0]에서 다른 % F 전에 끝납니다.
테이블 2는 첫 번째 테이블과 다른 필드를 가지고 있으므로 두 번째 % F에서 다른 헤더로 시작됩니다.

SSIS에서 가능합니까?

답변

0

단일 플랫 파일에서 2 개의 테이블 데이터가 제공됩니다. 이미지에서 볼 때 두 테이블 모두 다른 데이터 구조를가집니다. 제 생각에는 파일을 한 번에로드하기가 어렵습니다.

5 월,이 단계는 당신을 도울 것입니다.

단계 1. 모든 데이터를 테이블에로드하십시오 (테이블 이름을 [Table]로 지정하십시오). column headers .DATA은 다음과 같이 보일 수 있습니다 포함 부하 (예처럼 패턴을.) 이 테이블에서 당신이에서 식별 도움이 될 것입니다 당신이 쿼리 아래와 같은 증분 열

enter image description here

2 단계를 추가 확인 두 번째 테이블에서 어떤 행이 시작됩니까? 소스가 조건부 분할을 추가 한 후 당신의 SSIS 패키지에서

Select Top 1 Column0 From [Table] Where Column1 = '%F' Order By Column0 Desc 

[Table].로 소스와 도막 추가 3 단계

결과

위에 저장하는 변수를 추가합니다.

If Column0 < variable value, sent row to [Table1] 
else to [Table2] 

수정 사항이 더있을 수 있습니다. 추가 의견에 따라


:

당신이 1 개 이상의 테이블이있는 경우

.

단계 1. 모든 데이터를 한 테이블에로드하십시오.

단계 2. 추가 열 (image에 [columnX])을 추가하십시오. 그 값은 테이블을 식별 할 수 있어야합니다.

enter image description here

3 단계. 조건부 분할 자체를 사용하여 columnX를 사용하여 각 행을 해당 테이블에 매핑합니다. 요청에 따라


는, 편집 추가 : 이 this..Run 같은 SSMS에서 스크립트를 논리를 사용하고 결과를 참조하십시오.

Declare @table table (id int identity(1,1),Col1 varchar(5), ColX int) 
Insert into @table (Col1) Values 
('%F'),('%R'),('%R'),('%R'),('%R'),('%R'),('%R'), 
('%F'),('%R'),('%R'),('%R'),('%R'),('%R'),('%R'), 
('%F'),('%R'),('%R'),('%R'),('%R') 

Select * 
from @table A 

Update Y 
Set  ColX = Z.X 
From @table Y Join(
Select A.id FromId,B.id ToId,A.X From 
(
Select id,ROW_NUMBER() Over (Order By id) X From (
Select id from @table Where Col1 = '%F' 
Union 
Select max(id) id From @table) Lu) A, 
(
Select id,ROW_NUMBER() Over (Order By id) X From (
Select id from @table Where Col1 = '%F' 
Union 
Select max(id) id From @table) Lu) B 
Where A.X = B.X - 1) Z On Y.id >= Z.FromId and Y.id < Z.ToId 
Select * 
from @table A 

Select * 
from @table A 
+0

가끔 피드백을주십시오. –

+0

감사합니다. 그러나 문제는 플랫 파일 소스에 2 개 이상의 테이블이 있다는 것입니다. 대략 10-20 개의 테이블이 있습니다. 그리고 어떤 테이블은 다른 컬럼보다 큰 컬럼 수를 가지고 있습니다. Ex. 첫 번째 테이블에는 10 개의 테이블이 있고 두 번째 테이블에는 4 개의 열이 null로 남겨진 6 개의 열이 있지만 세 번째 테이블이 10보다 크면 다른 열은 마지막 열 [9]로 혼잡합니다. 열의 읽기가 10 열 –

+0

첫 번째 테이블을 기반으로하기 때문에 코멘트를 참조하십시오 –

관련 문제