기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
변환 규칙 및 작업
변환 작업을 사용하여 선택한 스키마, 테이블 또는 뷰에 적용할 변환을 지정합니다. 변환 규칙은 선택적입니다.
제한 사항
동일한 객체(스키마, 테이블, 열, 테이블-테이블스페이스 또는 인덱스-테이블스페이스)에 대해 둘 이상의 변환 규칙 작업을 적용할 수 없습니다. 각 변형 작업이 서로 다른 객체에 적용되는 한, 모든 레벨에 여러 변환 규칙 작업을 적용할 수 있습니다.
변환 규칙의 테이블 이름과 열 이름은 대소문자를 구분합니다. 예를 들어, Oracle 또는 Db2 데이터베이스의 테이블 이름과 열 이름을 대문자로 제공해야 합니다.
오른쪽에서 왼쪽으로 쓰는 언어를 사용하는 열 이름에는 변환이 지원되지 않습니다.
이름에 특수 문자(예: #, \, /, -)가 포함된 열에서는 변환을 수행할 수 없습니다.
BLOB/CLOB 데이터 형식에 매핑된 열에 대해 지원되는 유일한 변환은 대상에서 열을 삭제하는 것입니다.
AWS DMS 두 개의 원본 테이블을 단일 대상 테이블에 복제하는 것은 지원하지 않습니다. AWS DMS 복제 작업의 변환 규칙에 따라 테이블에서 테이블로, 열에서 열로 레코드를 복제합니다. 객체 이름은 중복되지 않도록 고유한 이름이어야 합니다.
예를 들어, 소스 테이블에는 이름이
ID
인 열이 있고 그에 상응하는 대상 테이블에는id
라는 기존 열이 있습니다. 하나의 규칙에서ADD-COLUMN
문을 사용하여id
라는 새 열을 추가하고 SQLite 문을 사용하여 열을 사용자 지정 값으로 채우는 경우, 이름이id
인 모호한 중복 객체가 생성되며 이 객체는 지원되지 않습니다.변환 규칙을 만들 때는 선택 규칙에 여러 열이 지정된 경우 (예: 로 설정한 경우) 에만
data-type
매개 변수를 사용하는column-name
것이%
좋습니다. 단일 열을 선택하는data-type
데는 사용하지 않는 것이 좋습니다.
값
변환 규칙 유형을 사용하는 테이블 매핑 규칙의 경우, 다음 값을 적용할 수 있습니다.
파라미터 | 가능한 값 | 설명 |
---|---|---|
rule-type |
transformation |
선택 규칙에서 지정한 각 객체에 규칙을 적용하는 값입니다. 달리 지정되지 않는 한, transformation 을 사용합니다. |
rule-id |
숫자 값. | 규칙을 식별하기 위한 고유한 숫자 값입니다. 동일한 객체 (스키마, 테이블, 열, 테이블 간 공간 또는 인덱스 테이블 공간) 에 대해 여러 변환 규칙을 지정하는 경우 는 하위 rule-id로 변환 규칙을 AWS DMS 적용합니다. |
rule-name |
영숫자 값입니다. | 규칙을 식별하기 위한 고유한 이름입니다. |
object-locator |
객체는 다음 파라미터를 사용합니다.
|
규칙이 적용되는 각 스키마, 테이블 또는 뷰, 테이블 테이블스페이스, 인덱스 테이블스페이스 및 열의 이름입니다. 각
또한
|
rule-action |
|
객체에 적용할 변환. 모든 변환 규칙 작업은 대소문자를 구분합니다.
기존 작업의 경우 |
rule-target |
schema , table ,
column , table-tablespace ,
index-tablespace |
변환할 객체의 유형입니다.
|
value |
대상 유형에서 명명 규칙을 따르는 영숫자 값입니다. | rename 과 같이 입력이 필요한 작업의 새 값입니다. |
old-value |
대상 유형에서 명명 규칙을 따르는 영숫자 값입니다. | replace-prefix 와 같이 대체가 필요한 작업의 이전 값입니다. |
data-type |
또는 AWS DMS 다음 DMS 데이터 유형에 대한 열 데이터 유형 변환을 지원합니다.
|
다음은 대체할 기존 데이터 형식을 지정하는
여기서는 |
expression |
SQLite 구문을 따르는 영숫자 값입니다. |
이 파라미터에는 표현식만 지원된다는 점에 유의하십시오. 연산자와 명령은 지원되지 않습니다. 변환 규칙에 표현식을 사용하는 방법에 관한 자세한 내용은 변환 규칙 표현식을 사용하여 열 내용 정의 단원을 참조하십시오. SQLite 표현식에 관한 자세한 내용은 SQLite 함수를 사용하여 표현식 작성 섹션을 참조하세요. |
primary-key-def |
객체는 다음 파라미터를 사용합니다.
|
이 파라미터는 변환된 테이블 또는 뷰에서 고유 키의 이름, 유형 및 콘텐츠를 정의할 수 있습니다. 이는 rule-action 이 define-primary-key 로 설정되고 rule-target 이 table 로 설정된 경우에 해당됩니다. 기본적으로 고유 키는 기본 키로 정의됩니다. |
before-image-def |
객체는 다음 파라미터를 사용합니다.
|
이 파라미터는 이전 이미지 열을 식별하는 명명 규칙을 정의하고 대상에 이전 이미지 열을 만들 수 있는 소스 열을 식별하는 필터를 지정합니다.
AWS DMS 대상 엔드포인트에서 이전 이미지 지원에 관한 자세한 내용은 다음을 참조하십시오. |
예
예 스키마 이름 바꾸기
다음은 소스의 스키마 이름 Test
를 대상의 Test1
로 변경하는 예입니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "Test" }, "value": "Test1" } ] }
예 테이블 이름 바꾸기
다음은 소스의 테이블 이름 Actor
를 대상의 Actor1
로 변경하는 예입니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": { "schema-name": "Test", "table-name": "Actor" }, "value": "Actor1" } ] }
예 열 이름 바꾸기
다음은 Actor
테이블에서 소스의 열 이름 first_name
을 대상의 fname
으로 변경하는 예입니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name" : "first_name" }, "value": "fname" } ] }
예 Oracle 테이블 테이블스페이스의 이름 바꾸기
다음은 Oracle 소스에서 Actor
라는 테이블에 대해 SetSpace
라는 테이블 테이블스페이스의 이름을 Oracle 대상 엔드포인트의 SceneTblSpace
로 바꾸는 예입니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name": "SetSpace" }, "value": "SceneTblSpace" } ] }
예 Oracle 인덱스 테이블스페이스의 이름 바꾸기
다음은 Oracle 소스에서 Actor
라는 테이블에 대해 SetISpace
라는 인덱스 테이블스페이스의 이름을 Oracle 대상 엔드포인트의 SceneIdxSpace
로 바꾸는 예입니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name": "SetISpace" }, "value": "SceneIdxSpace" } ] }
예 열 추가
다음 예에서는 스키마 test
의 테이블 Actor
에 datetime
열을 추가합니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "actor" }, "value": "last_updated", "data-type": { "type": "datetime", "precision": 6 } } ] }
예 열 제거
다음은 소스의 Actor
라는 테이블을 변환하여 col
문자로 시작하는 모든 열을 대상에서 제거하는 예입니다.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }
예 소문자로 변환
다음은 소스의 테이블 이름 ACTOR
를 대상의 actor
로 변환하는 예입니다.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "ACTOR" } }] }
예 대문자로 변환
다음은 모든 테이블의 전체 열과 모든 스키마를 소스의 소문자에서 대상의 대문자로 변환하는 예제입니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" } } ] }
예 접두사 추가
다음은 소스의 모든 테이블을 변환하여 대상에서 테이블에 DMS_
접두사를 추가하는 예입니다.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "DMS_" }] }
예 접두사 바꾸기
다음은 소스에서 Pre_
접두사를 포함하는 모든 열을 변환하여 이 접두사를 대상의 NewPre_
접두사로 대체하는 예입니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" }, "value": "NewPre_", "old-value": "Pre_" } ] }
예 접미사 제거
다음은 소스의 모든 테이블을 변환하여 대상의 테이블에서 _DMS
접미사를 제거하는 예입니다.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "_DMS" }] }
예 기본 키 정의
대상 엔드포인트로 마이그레이션된 ITEM
테이블의 세 열에서 ITEM-primary-key
라는 기본 키를 정의하는 예입니다.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": "ITEM-primary-key", "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }
예 고유 인덱스 정의
대상 엔드포인트로 마이그레이션된 ITEM
테이블의 세 열에서 ITEM-unique-idx
라는 고유 인덱스를 정의하는 예입니다.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": "ITEM-unique-idx", "origin": "unique-index", "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }
예 대상 열의 데이터 형식 변경
다음 예제에서는 이름이 SALE_AMOUNT
인 대상 열의 데이터 형식을 기존 데이터 형식에서 int8
로 변경합니다.
{ "rule-type": "transformation", "rule-id": "1", "rule-name": "RuleName 1", "rule-action": "change-data-type", "rule-target": "column", "object-locator": { "schema-name": "dbo", "table-name": "dms", "column-name": "SALE_AMOUNT" }, "data-type": { "type": "int8" } }
예 이전 이미지 열 추가
emp_no
라는 소스 열에 대해 다음 예의 변환 규칙은 대상에 BI_emp_no
라는 새 열을 추가합니다.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "employees" }, "rule-action": "add-before-image-columns", "before-image-def": { "column-prefix": "BI_", "column-suffix": "", "column-filter": "pk-only" } } ] }
여기서 다음 문은 해당 행의 BI_emp_no
열을 1로 채웁니다.
UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;
지원되는 AWS DMS 대상에 CDC 업데이트를 기록할 때 BI_emp_no
열을 통해 열의 값이 업데이트된 행을 확인할 수 있습니다. emp_no