콘텐츠로 이동

Data Mapping Guide

개요

데이터 매핑 규칙은 YAML 파일로 작성하며, Datatrans 전송 실행 시 mappings 파라미터로 지정하여 적용합니다.

매핑 규칙의 목적은 다음과 같습니다.

  • 컬럼 이름 또는 구조가 다른 경우: source_column으로 Source 컬럼을 Target 컬럼에 직접 매핑
  • 값 변환이 필요한 경우: conversion_rule로 Source 컬럼 기반의 계산식 또는 가공식을 적용

1. YAML 전체 구조

매핑 파일은 최상위에 mappings: 키를 두고, 그 아래에 규칙 ID를 키로 하여 규칙을 정의합니다.

mappings:
  <RULE_ID>:
    target:
      owner: <TARGET_SCHEMA>
      table_name: <TARGET_TABLE>
    source:
      owner: <SOURCE_SCHEMA>
      table_name: <SOURCE_TABLE>
    columns:
      - target_column: <T_COL1>
        source_column: <S_COL1>
      - target_column: <T_COL2>
        conversion_rule: "<EXPR>"

2. 규칙 ID (RULE_ID)

2.1 설명

RULE_IDmappings: 아래에서 각 규칙을 구분하는 고유 식별자입니다.

Datatrans는 이 ID를 기준으로 규칙을 관리하고 병합합니다.

2.2 권장 네이밍

규칙 ID는 Target 기준으로 작성하는 것을 권장합니다.

  • TARGET_OWNER.TARGET_TABLE
  • 필요 시 suffix를 붙여 충돌 방지

예시:

  • USR_TARGET_MINI.MAPPING_CONV
  • USR_TARGET_MINI.MAPPING_CONV__V1

3. target / source 블록

각 규칙은 단일 소스 테이블과 단일 타겟 테이블의 1:1 관계로만 정의합니다.

3.1 target

Target 테이블 정보를 지정합니다.

target:
  owner: USR_TARGET_MINI
  table_name: MAPPING_CONV

3.2 source

Source 테이블 정보를 지정합니다.

source:
  owner: USR_SOURCE_MINI
  table_name: EMP_01

3.3 주의사항

제한사항

이 매핑은 단일 소스 테이블에서 단일 타겟 테이블로의 매핑만 지원합니다.

  • JOIN은 지원하지 않습니다.
  • 다중 테이블 FROM 구문은 지원하지 않습니다.

4. columns 블록

4.1 설명

columns:는 컬럼 단위 매핑 또는 변환 규칙의 목록입니다.

각 항목은 아래 요소를 포함해야 합니다.

  • target_column (필수)
  • 아래 둘 중 하나만 선택
    • source_column
    • conversion_rule

4.2 source_column 방식

source_column은 Source 컬럼 값을 그대로 Target 컬럼에 매핑할 때 사용합니다.

- target_column: DATATA1
  source_column: OWNER

4.3 conversion_rule 방식

conversion_rule은 표현식 결과를 Target 컬럼에 매핑할 때 사용합니다.

변환식은 Source 테이블의 컬럼을 기준으로 작성합니다.

중요

  • conversion_rule 값은 큰따옴표로 감싸는 것을 권장합니다.
  • 문자열 상수는 표현식 내부에서 작은따옴표를 사용합니다.
- target_column: CONV1
  conversion_rule: "ROUND(DATA_LENGTH + 3.5)"

- target_column: CONV2
  conversion_rule: "'MIG'"

- target_column: CONV3
  conversion_rule: "COLUMN_NAME || 'ABC'"

- target_column: MIG_DATE
  conversion_rule: "SYSDATE"
- target_column: CONV1
  conversion_rule: round(DATA_LENGTH+3.5)

5. 예시 YAML

아래는 conversion_rule 표기를 큰따옴표 기준으로 통일한 권장 예시입니다.

mappings:
  USR_TARGET_MINI.MAPPING_CONV:
    target:
      owner: USR_TARGET_MINI
      table_name: MAPPING_CONV
    source:
      owner: USR_SOURCE_MINI
      table_name: EMP_01

    columns:
      - target_column: DATATA1
        source_column: OWNER
      - target_column: DATATA2
        source_column: TABLE_NAME
      - target_column: DATATA3
        source_column: COLUMN_NAME
      - target_column: CONV1
        conversion_rule: "ROUND(DATA_LENGTH + 3.5)"
      - target_column: CONV2
        conversion_rule: "'MIG'"
      - target_column: CONV3
        conversion_rule: "COLUMN_NAME || 'ABC'"
      - target_column: MIG_DATE
        conversion_rule: "SYSDATE"

  USR_TARGET_MINI.MAPPING_CONV2:
    target:
      owner: USR_TARGET_MINI
      table_name: MAPPING_CONV2
    source:
      owner: USR_SOURCE_MINI
      table_name: EMP_02

    columns:
      - target_column: DATATA1
        source_column: OWNER
      - target_column: DATATA2
        source_column: TABLE_NAME
      - target_column: DATATA3
        source_column: COLUMN_NAME
      - target_column: CONV1
        conversion_rule: "ROUND(DATA_LENGTH + 3.5)"
      - target_column: CONV2
        conversion_rule: "'MIG'"
      - target_column: CONV3
        conversion_rule: "COLUMN_NAME || 'ABC'"
      - target_column: MIG_DATE
        conversion_rule: "SYSDATE"

6. 매핑 파일 지정 방법 (mappings 파라미터)

매핑 규칙은 전송 실행 시 mappings 파라미터로 지정합니다.

mappings는 리스트 형식이므로, 여러 파일이나 패턴을 지정할 때는 ,로 구분하여 한 번에 입력해야 합니다.

주의

mappings=...를 여러 번 반복해서 쓰는 방식은 지원하지 않습니다.

6.1 단일 파일 지정

mappings=/home/user/dt_parfiles/mapping_rule.yaml

6.2 여러 파일을 콤마로 지정

mappings=/home/user/dt_parfiles/map_hr.yaml,/home/user/dt_parfiles/map_sales.yaml,/home/user/dt_parfiles/map_finance.yaml

6.3 디렉터리 내 모든 YAML 적용

mappings=/home/user/dt_parfiles/mappings/*.yaml

6.4 하위 폴더까지 포함

mappings=/home/user/dt_parfiles/mappings/**/*.yaml

6.5 여러 패턴과 단일 파일을 함께 사용

mappings=/opt/datatrans/mappings/common/*.yaml,/home/user/dt_parfiles/extra_map.yaml,/home/user/dt_parfiles/projectX/**/*.yaml

6.6 운영 팁

권장사항

  • 규칙 파일이 많아지면 common/, project/, customer/ 같은 폴더로 구분해 관리하는 것을 권장합니다.
  • mappings=에는 글롭 패턴을 조합해 사용할 수 있으므로, 공통 규칙과 프로젝트별 규칙을 분리하면 유지보수가 쉬워집니다.
  • 여러 파일을 함께 적용할 때는 RULE_ID 중복 여부를 반드시 확인해야 합니다.

7. 주의사항

# 주의사항
1 columns:에 정의된 target_column만 변환 또는 매핑 대상으로 처리됩니다. 규칙에 없는 Target 컬럼은 자동 변환되지 않습니다.
2 conversion_rule은 큰따옴표로 감싸는 것을 권장합니다. 표현식, 문자열 상수, 컬럼 참조의 구분을 명확히 하기 위함입니다.
3 하나의 target_column에는 source_column 또는 conversion_rule 중 하나만 사용해야 합니다. 동시에 지정하면 규칙 해석이 모호해질 수 있습니다.
4 RULE_ID는 중복되지 않게 유지해야 합니다. 여러 파일을 함께 적용할 때 중복되면 충돌 또는 덮어쓰기 문제가 발생할 수 있습니다.
5 매핑 규칙은 단일 테이블 기준으로만 작성해야 합니다. JOIN이나 다중 테이블 참조는 지원하지 않습니다.
6 매핑 규칙 파일은 여러 개를 함께 지정할 수 있으며, 모두 mappings 파라미터로 전달합니다.

8. 실행 예시

datatrans \
  source=APP_SOURCE/password@192.168.0.10:1521/SOURCEPDB \
  target=APP_TARGET/password@192.168.0.20:1521/TARGETPDB \
  schemas=USR_SOURCE_MINI \
  mappings=/home/user/dt_parfiles/mapping_rule.yaml \
  degree=4 \
  table_action=TRUNCATE \
  jobname=mapping_test_01