출처 열 이름별 사용자정의 매핑
또는 대체 문자와 대소문자를 구분하여 지원하는 정규화된 열 이름을 사용하여 다음을 수행합니다.
AUTOSCHEMAOPTIONS TYPEMAP column = 'varchar(100)'
AUTOSCHEMAOPTIONS TYPEMAP table.column = 'int'
AUTOSCHEMAOPTIONS TYPEMAP schema.table.column = 'double'
AUTOSCHEMAOPTIONS TYPEMAP catalog.schema.table.column = 'timestamp'
AUTOSCHEMAOPTIONS TYPEMAP *cust*.column = 'bigint'
AUTOSCHEMAOPTIONS TYPEMAP "cust*"."column" = 'decimal(5,2)'
예제:
출처는 SQL Server입니다.
CREATE TABLE dbo.customer(id int not null primary key, name varchar(200), address varchar(2000), city varchar(200), state char(2), zipcode char(5));
대상은 Oracle:
MAP dbo.customer, TARGET dept.customer;
SQL Server의 varchar(p)가 자동으로 Oracle의 VARCHAR2(p)로 변환됩니다.
CREATE TABLE dept.customer(id number(11), name varchar2(200), address varchar2(2000), city varchar2(200), state char(2), zipcode char(5), PRIMARY KEY (id));
다음 예와 같이 char를 varchar2(p)에 수동으로 매핑할 수 있습니다.
-- Map SQL Server char to varchar2
AUTOSCHEMAOPTIONS TYPEMAP 'char' = 'varchar2(%p)'
소스 문자에 전체 자릿수가 없는 경우 %l를 사용하여 대상 문자 유형의 전체 자릿수를 지정해야 합니다. 예를 들어, tinyint의 범위는 0에서 255 사이이며 최대 문자 길이는 3이므로 대상 열은 varchar2(3)로 생성됩니다.
AUTOSCHEMAOPTIONS TYPEMAP 'tinyint' = 'varchar2(%l)'
또한 소스 테이블 및 열 이름별로 데이터 유형 매핑을 지정할 수 있습니다.
-- any sale_amt column
AUTOSCHEMAOPTIONS TYPEMAP sale_amt = 'decimal(20,2)'
-- only sale_amt column in table sales in any schema
AUTOSCHEMAOPTIONS TYPEMAP sales.sale_amt = 'decimal(20,2)'
-- only amount column in table sales in schema dbo
AUTOSCHEMAOPTIONS TYPEMAP dbo.sales.sale_amt = 'decimal(20,2)'
-- using wildcard
AUTOSCHEMAOPTIONS TYPEMAP *_amt = 'decimal(20,2)'
AUTOSCHEMAOPTIONS TYPEMAP dbo.sales.*_amt = 'decimal(20,2)'
AUTOSCHEMAOPTIONS TYPEMAP dbo.s*.*_amt = 'decimal(20,2)'