자동 객체 이름 매핑

대상 테이블 이름은 MAP 문의 TARGET 절에서 가져오며 대상 열 이름은 추적 메타데이터의 소스 열 이름에서 가져옵니다.

자동 스키마 전개 기능은 현재 대상 데이터베이스 CHARSET가 소스 데이터베이스 CHARSET와 동일하거나 소스 데이터베이스 CHARSET의 상위 집합인 경우에만 객체 이름 매핑을 지원합니다. 다른 경우에는 적절한 오류 메시지가 보고됩니다.

소스에서 table 또는 column 이름 길이가 너무 길거나(이 길이는 대상 데이터베이스에서 지원되지 않음) table 또는 column 이름에 지원되지 않는 문자(대상 데이터베이스에서 지원되지 않음)가 포함되어 있는 경우 Replicat가 적절한 오류 메시지와 함께 비정상 종료됩니다.

계속하려면 다음 수정 조치 중 하나를 수행해야 합니다.

자동 스키마 전개에 대해 생성된 테이블 또는 열 이름의 대소문자 구분은 소스 및 대상 데이터베이스의 대소문자 구분 규칙에 따라 달라지며 다음 규칙에 따라 제어됩니다.

  1. 대소문자 구분 소스 데이터베이스에서 대소문자 구분 대상 데이터베이스 복제 시나리오에 이르기까지 모든 이름은 따옴표로 묶어서 사용됩니다.

  2. source와 target의 다른 조합(대소문자 구분과 대소문자 구분 안함, 대소문자 구분 안함과 대소문자 구분 안함, 대소문자 구분과 대소문자 구분 포함)의 경우 다음 규칙을 따릅니다.

    1. 테이블 이름은 Replicat 매개변수 파일에서 MAP 문의 TARGET 절에 지정된 대로 정확하게 사용됩니다.

    2. Replicat 매개변수 파일에서 MAP 문의 COLMAP 절에서 명시적으로 따옴표로 묶지 않는 한 열 이름은 추적 파일에서 따옴표 없이 사용됩니다.

열 이름에 다음 특수 문자 또는 공백이 포함된 경우 이름을 따옴표로 묶고 사용합니다.

'".,{}()[]|+-_%~^#@/!><*&$:=?;\

다음은 다음과 같은 사용 사례에 대해 Automatic Schema Evolution에서 사용하는 객체 이름 지정 규칙입니다.

  1. 사용 사례: 대소문자 구분 소스 데이터베이스

    옵션 동작

    대소문자 구분 대상 데이터베이스에 복제하는 경우 다음과 같이 대소문자를 고려하십시오.

    • 소스 테이블 이름은 hr.employee입니다.

    • Column id 유형 int(기본 키)

    • 이름 유형 varchar

    MAP 문의 TARGET 절에 있는 대상 테이블 이름에 와일드카드가 포함된 경우 소스 이름과 대소문자는 따옴표가 추가된 대상 테이블에 사용됩니다.

    예제:

    Replicat 매개변수 파일의 MAP 문은 다음과 같습니다.

    MAP hr.*, TARGET region.*;

    자동 스키마 전개 기능은 대소문자를 구분하는 Target Database에서 다음과 같이 DDL을 생성합니다.

    CREATE TABLE "region"."employee" ( "id" int not null, "name" VARCHAR(20), primary key ("id"));

    참고:

    소스 및 대상 데이터베이스는 대소문자를 구분하므로 객체 이름 employee는 CREATE TABLE DDL에서 따옴표로 묶습니다.

    대소문자 구분 대상 데이터베이스에 복제하는 경우 다음과 같이 대소문자를 고려하십시오.

    • 소스 테이블 이름은 hr.employee입니다.

    • Column id 유형 int(기본 키)

    • 이름 유형 varchar

    MAP 문의 TARGET 절에 있는 대상 테이블 이름에 명시적 이름이 포함된 경우 소스 이름과 대소문자는 따옴표가 추가된 대상 테이블에 사용됩니다.

    예제:

    Replicat 매개변수 파일의 MAP 문은 다음과 같습니다.

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name); 

    자동 스키마 전개 기능은 다음과 같이 대소문자를 구분하는 Target Database에서 DDL을 생성합니다.

    CREATE TABLE "region"."employee" ( "id" int not null, "EMPNAME" VARCHAR(20), primary key ("id"));

    참고:

    객체 이름 employee는 MAP 문의 TARGET 절에 있는 객체 이름의 따옴표가 해제되어 있으므로 CREATE TABLE DDL에서 따옴표로 묶이지 않습니다.

    대소문자를 구분하지 않는 대상 데이터베이스에 복제하는 경우 다음과 같이 대소문자를 사용하는 것이 좋습니다.

    • 소스 테이블 이름은 hr.employee입니다.

    • Column id 유형 int(기본 키)

    • 이름 유형 varchar

    MAP 문의 TARGET 절에 있는 대상 테이블 이름에 와일드카드가 포함된 경우 대상 테이블에 대해 소스 이름과 대소문자가 동일하게 사용됩니다.

    예제:

    Replicat 매개변수 파일의 map 문은 다음과 같습니다.

    MAP hr.*, TARGET region.*;

    자동 스키마 전개 기능은 다음과 같이 대소문자를 구분하지 않는 Target Database에서 DDL을 생성합니다.

    CREATE TABLE region.employee (id int not null, name VARCHAR(20), primary key (id));

    참고:

    대상 절에 따옴표로 묶이지 않은 와일드카드 이름이 있으므로 객체 이름 employee은 CREATE TABLE DDL에서 따옴표로 묶이지 않습니다.

    대소문자를 구분하지 않는 대상 데이터베이스에 복제하는 경우 다음과 같이 대소문자를 사용하는 것이 좋습니다.

    • 소스 테이블 이름은 hr.employee입니다.

    • Column id 유형 int(기본 키)

    • 이름 유형 varchar

    MAP 문의 TARGET 절에 있는 대상 테이블 이름에 명시적 이름이 포함된 경우 대상 테이블에 대해 소스 이름과 대소문자가 동일하게 사용됩니다.

    예제:

    Replicat 매개변수 파일의 MAP 문은 다음과 같습니다.

    MAP hr.employee, TARGET region."employee", COLMAP(USEDEFAULTS, "EMPNAME" = name);

    자동 스키마 전개 기능은 다음과 같이 대소문자를 구분하지 않는 Target Database에서 DDL을 생성합니다.

    CREATE TABLE region."employee" ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));

    참고:

    MAP 문의 TARGET 절에 있는 객체 이름이 따옴표로 묶여 있으므로 CREATE TABLE DDL에서 객체 이름 employee의 따옴표가 붙습니다. EMPNAME는 COLMAP 절에 따옴표로 묶여 있으므로 DDL에서 따옴표로 묶입니다.
  2. 사용 사례: 대소문자 무시 소스 데이터베이스

    옵션 동작

    대소문자 구분 대상 데이터베이스에 복제하는 경우 다음과 같이 대소문자를 사용하는 것이 좋습니다.

    • 소스 테이블 이름은 hr.employee입니다.

    • Column id 유형 int(기본 키)

    • 이름 유형 varchar

    MAP 문의 TARGET 절에 있는 대상 테이블 이름에 와일드카드가 포함된 경우 대상 테이블에 대해 소스 이름과 대소문자가 동일하게 사용됩니다.

    예제:

    Replicat 매개변수 파일의 MAP 문은 다음과 같습니다.

    MAP hr.*, TARGET region.*;

    자동 스키마 전개 기능은 다음과 같이 대소문자를 구분하는 Target Database에서 DDL을 생성합니다.

    CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));

    참고:

    대상 절에 따옴표로 묶이지 않은 와일드카드 이름이 있으므로 객체 이름 employee은 CREATE TABLE DDL에서 따옴표로 묶이지 않습니다.

    대소문자 구분 대상 데이터베이스에 복제하는 경우 다음과 같이 대소문자를 사용하는 것이 좋습니다.

    • 소스 테이블 이름은 hr.employee입니다.

    • Column id 유형 int(기본 키)

    • 이름 유형 varchar

    MAP 문의 TARGET 절에 있는 대상 테이블 이름에 명시적 이름이 포함된 경우 대상 테이블에 대해 소스 이름과 대소문자가 동일하게 사용됩니다.

    예제:

    Replicat 매개변수 파일의 MAP 문은 다음과 같습니다.

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);

    자동 스키마 전개 기능은 다음과 같이 대소문자를 구분하는 Target Database에서 DDL을 생성합니다.

    CREATE TABLE region.employee ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));

    참고:

    MAP 문의 TARGET 절에 있는 객체 이름이 따옴표로 묶여 있지 않으므로 CREATE TABLE DDL에서 객체 이름 employee은 따옴표로 묶여 있지 않습니다.

    대소문자를 구분하지 않는 대상 데이터베이스에 복제하는 경우 다음과 같이 대소문자를 사용하는 것이 좋습니다.

    • 소스 테이블 이름은 hr.employee입니다.

    • Column id 유형 int(기본 키)

    • 이름 유형 varchar

    MAP 문의 TARGET 절에 있는 대상 테이블 이름에 와일드카드가 포함된 경우 대상 테이블에 대해 소스 이름과 대소문자가 동일하게 사용됩니다.

    예제:

    Replicat 매개변수 파일의 MAP 문은 다음과 같습니다.

    MAP hr.*, TARGET region.*;

    자동 스키마 전개 기능은 다음과 같이 대소문자를 구분하지 않는 Target Database에서 DDL을 생성합니다.

    CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));

    참고:

    대상 절에 따옴표로 묶이지 않은 와일드카드 이름이 있으므로 객체 이름 employee은 CREATE TABLE DDL에서 따옴표로 묶이지 않습니다.

    대소문자를 구분하지 않는 대상 데이터베이스에 복제하는 경우 다음과 같이 대소문자를 사용하는 것이 좋습니다.

    • 소스 테이블 이름은 hr.employee입니다.

    • Column id 유형 int(기본 키)

    • 이름 유형 varchar

    MAP 문의 TARGET 절에 있는 대상 테이블 이름에 명시적 이름이 포함된 경우 대상 테이블에 대해 소스 이름과 대소문자가 동일하게 사용됩니다.

    예제:

    Replicat 매개변수 파일의 MAP 문은 다음과 같습니다.

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, EMPNAME = name);

    자동 스키마 전개 기능은 다음과 같이 대소문자를 구분하지 않는 Target Database에서 DDL을 생성합니다.

    CREATE TABLE region.employee ( id int not null, EMPNAME VARCHAR(20), primary key (id));

    참고:

    MAP 문의 TARGET 절에 있는 객체 이름이 따옴표로 묶여 있지 않으므로 CREATE TABLE DDL에서 객체 이름 employee은 따옴표로 묶여 있지 않습니다.