에, 나는 OLDEDB에 모든 데이터를 전송합니다. 하지만 다른 테이블에 데이터를 나누고 싶습니다.
플랫 파일 소스 내 플랫 파일 원본에서</p> <p>SSIS
예.
표 1은 처음 % F에서 시작하고 col [0]에서 다른 % F 전에 끝납니다.
테이블 2는 첫 번째 테이블과 다른 필드를 가지고 있으므로 두 번째 % F에서 다른 헤더로 시작됩니다.
SSIS에서 가능합니까?
에, 나는 OLDEDB에 모든 데이터를 전송합니다. 하지만 다른 테이블에 데이터를 나누고 싶습니다.
플랫 파일 소스 내 플랫 파일 원본에서</p> <p>SSIS
예.
표 1은 처음 % F에서 시작하고 col [0]에서 다른 % F 전에 끝납니다.
테이블 2는 첫 번째 테이블과 다른 필드를 가지고 있으므로 두 번째 % F에서 다른 헤더로 시작됩니다.
SSIS에서 가능합니까?
단일 플랫 파일에서 2 개의 테이블 데이터가 제공됩니다. 이미지에서 볼 때 두 테이블 모두 다른 데이터 구조를가집니다. 제 생각에는 파일을 한 번에로드하기가 어렵습니다.
5 월,이 단계는 당신을 도울 것입니다.
단계 1. 모든 데이터를 테이블에로드하십시오 (테이블 이름을 [Table]
로 지정하십시오). column headers
.DATA은 다음과 같이 보일 수 있습니다 포함 부하 (예처럼 패턴을.) 이 테이블에서 당신이에서 식별 도움이 될 것입니다 당신이 쿼리 아래와 같은 증분 열
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])을 추가하십시오. 그 값은 테이블을 식별 할 수 있어야합니다.
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
가끔 피드백을주십시오. –
감사합니다. 그러나 문제는 플랫 파일 소스에 2 개 이상의 테이블이 있다는 것입니다. 대략 10-20 개의 테이블이 있습니다. 그리고 어떤 테이블은 다른 컬럼보다 큰 컬럼 수를 가지고 있습니다. Ex. 첫 번째 테이블에는 10 개의 테이블이 있고 두 번째 테이블에는 4 개의 열이 null로 남겨진 6 개의 열이 있지만 세 번째 테이블이 10보다 크면 다른 열은 마지막 열 [9]로 혼잡합니다. 열의 읽기가 10 열 –
첫 번째 테이블을 기반으로하기 때문에 코멘트를 참조하십시오 –