TALEND

[TALEND] 두 개의 테이블에 나눠진 데이터를 하나의 테이블로 이관하는 방법

escaper101 2020. 3. 30. 18:28

이번 포스팅에서는 A BD의 데이터를 B BD의 테이블에 이관하는 방법을 다룬 앞선 포스팅의 심화라고 할 수 있다. 

두 개의 테이블에 나뉘어 저장된 데이터를 하나의 output DB에 한꺼번에 이관하는 방법을 알아볼 것이다. 

 

1. 적당한 이름의 Job을 생성한다.

새로운 Job 생성

2. 이관 대상 테이블과 데이터가 이관될 테이블을 각각 가져와 팔레트에 생성한다. 

-> 나는 전 국가 데이터를 갖고 있는 Oracle의 countries 테이블의 데이터와 아시아 국가 데이터만 가지고 있는 countries_asia 테이블의 데이터를 outputDB인 MySQL의 countries 테이블에 이관할 것이다. 

유관 테이블 팔레트에 생성

3. 두 inputDB를 합쳐줄 tUnite 컴포넌트를 팔레트에 생성한다. 

tUnite 컴포넌트

  1) 이때, tUnite 컴포넌트의 스키마 생성에 유의한다. 나의 경우 Countries 테이블은 다음의 세 칼럼을 가지고 있다. 

countries 테이블 스키마

  2) 반면 Countries_Asia 테이블은 두 개의 칼럼만 가진다. 

countries_asia 테이블 스키마

  3) input으로 가져오는 두 테이블의 스키마가 다른 경우 output 테이블의 스키마와 동일한 DB의 스키마를 가져온다. 

  -> Edit schema 옆에 위치한 네모를 클릭하면 다음과 같은 화면이 뜬다. 이때, 나는 Region_id 칼럼을 포함한 세 개의 칼럼을 가지는 input_1 DB를 선택하였고 tDBInput_1 스키마와 tUnite_1 스키마 사이에 위치한 화살표를 클릭하여 스키마를 복사했다. 

tUnite 스키마 설정

4. tMap 컴포넌트를 생성하여 tUnite와 outputDB를 이어준다.

tMap으로 이어준 tUnite와 outputDB

5. tMap을 더블클릭하여 각 칼럼을 매핑해준다. 

칼럼 매핑

6. Job 실행하면 두 개의 테이블에 나뉘어져있던 데이터가 하나의 MySQL 테이블에 정상 이관된 것을 확인할 수 있다. 

-> region_id를 null로 가지는 데이터는 countries_asia에서 가져온 데이터이다. countries_aria 테이블은 region_id가 없었기 때문에 해당 테이블에서 가져온 데이터가 이관될 때 자동으로 default 값인 null이 입력된 채 이관되었다. 

Job 실행 결과