Mappage personnalisé par nom de colonne source

Ou par nom de colonne qualifié complet et partiel avec caractères génériques et respect de la casse :

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)'

Exemple :

La source est 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));

La cible est Oracle :

MAP dbo.customer, TARGET dept.customer;

Le fichier varchar(p) de SQL Server est automatiquement converti en fichier VARCHAR2(p) d'Oracle :

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));

Vous pouvez mettre manuellement en correspondance char avec varchar2(p), comme indiqué dans l'exemple suivant :

-- Map SQL Server char to varchar2
AUTOSCHEMAOPTIONS TYPEMAP 'char' = 'varchar2(%p)'

Si le caractère source n'a pas de précision, vous devez utiliser %l pour indiquer la précision du type de caractère cible. Par exemple, tinyint a une plage de 0 à 255 caractères, qui a une longueur maximale de 3 caractères, de sorte que la colonne cible sera créée en tant que varchar2(3).

AUTOSCHEMAOPTIONS TYPEMAP 'tinyint' = 'varchar2(%l)'

Vous pouvez également indiquer un mapping de type de données en fonction des noms de table et de colonne source :

-- 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)'