Benutzerdefinierte Zuordnung nach Quellspaltenname
Oder durch vollständig und teilweise qualifizierten Spaltennamen mit Platzhalter und Unterstützung für Groß- und Kleinschreibung:
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)'
Beispiel:
Quelle ist 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));
Ziel ist Oracle:
MAP dbo.customer, TARGET dept.customer;
Die varchar(p) von SQL Server wird automatisch in die VARCHAR2(p) von Oracle konvertiert:
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));
Sie können char manuell varchar2(p) zuordnen, wie im folgenden Beispiel dargestellt:
-- Map SQL Server char to varchar2
AUTOSCHEMAOPTIONS TYPEMAP 'char' = 'varchar2(%p)'
Wenn das Quellzeichen keine Nachkommastellen aufweist, müssen Sie %l verwenden, um die Nachkommastellen des Zielzeichentyps anzugeben. Beispiel: tinyint hat einen Bereich von 0 bis 255, der die maximale Zeichenlänge von 3 hat. Daher wird die Zielspalte als varchar2(3) erstellt.
AUTOSCHEMAOPTIONS TYPEMAP 'tinyint' = 'varchar2(%l)'
Sie können die Datentypzuordnung auch nach den Quelltabellen- und Spaltennamen angeben:
-- 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)'