Parameter AUTOSCHEMAOPTIONS verwenden
Mit dem Parameter AUTOSCHEMAOPTIONS mit den Optionen TYPEMAP und IGNORE_DATA_TRUNCATION können Sie die folgenden Overrides ausführen:
| AUTOMATISCHE SCHEMAOPTIONEN option_name | Beschreibung | Syntax | Beispiel |
|---|---|---|---|
IGNORE_MODIFY_KEY_COLUMN |
Standardmäßig lässt Automatic Schema das Ändern der Primärschlüsselspalte(n) nicht zu, und Replicat wird mit einem entsprechenden Fehler beendet. Sie können AUTOSCHEMAOPTIONS IGNORE_MODIFY_KEY_COLUMN angeben, um alle Änderungen an den Schlüsselspalten zu überspringen. |
AUTOSCHEMAOPTIONS IGNORE_MODIFY_KEY_COLUMN |
- |
ALLOW_MODIFY_KEY_COLUMN |
Standardmäßig lässt Automatic Schema das Ändern der Primärschlüsselspalten nicht zu, und Replicat wird abgebrochen. Geben Sie AUTOSCHEMAOPTIONS ALLOW_MODIFY_KEY_COLUMN an, um Änderungen an den Schlüsselspalten zuzulassen. |
AUTOMATISCHE SCHEMAOPTIONEN ALLOW_MODIFY_KEY_COLUMN | - |
MODIFY_COLUMN_NULLABILITY_ONLY |
Geben Sie AUTOSCHEMAOPTIONS MODIFY_COLUMN_NULLABILITY_ONLY an, wenn Sie nur Änderungen vornehmen möchten, die auf der Nullfähigkeit der Spalte und nicht auf der Typänderung basieren. |
AUTOSCHEMAOPTIONS MODIFY_COLUMN_NULLABILITY_ONLY |
- |
AUTOSCHEMAOPTIONS TYPEMAP |
Ermöglicht die Auswahl eines bestimmten Datentyps für bestimmte Quelldatentypnamen. | AUTOSCHEMAOPTIONS TYPEMAP '<source type name> ' '<target type name>' |
Beispiel: Wenn eine Quellspalte mit dem Datentyp smallint als erforderlicher Datentyp für Zielspalten in int konvertiert werden muss, verwenden Sie Folgendes: AUTOSCHEMAOPTIONS TYPEMAP 'smallint' = 'int' |
AUTOSCHEMAOPTIONS TYPEMAP |
Ermöglicht die Auswahl eines bestimmten Datentyps für bestimmte Quellspaltennamen. | ||
Hinweis: Vollqualifizierte Spaltennamen werden ebenfalls unterstützt, wie table_name, column_name. Die Namenskomponenten können Platzhalter enthalten, und Namen in Anführungszeichen werden ebenfalls unterstützt. |
AUTOSCHEMAOPTIONS TYPEMAP '<source column name>' = 'target type name' |
Beispiel: Um int als erforderlichen Datentyp für die Zielspalte zu verwenden, die der Quellspalte mit dem Namen EMPLOYEE_ID entspricht: AUTOSCHEMAOPTIONS TYPEMAP EMPLOYEE_ID = 'int' |
|
AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION |
Die automatische Schemaentwicklung ermöglicht die Typverbreiterung (Up-Conversion), wo immer möglich, um ein mögliches Abschneiden der Daten zu vermeiden. Mit der Option IGNORE_DATA_TRUNCATION können Sie jede Art von Typverbreiterung außer Kraft setzen. Bei string- oder binary-Typen (Schlüsselspalten oder Nicht-Schlüsselspalten) wird AUTOSCHEMA bei Verwendung des Datentyps mit fester Länge und der Ziellänge small in den entsprechenden Datentyp mit variabler Länge konvertiert, wenn er die Quelldaten aufnehmen kann. Andernfalls ist er nicht erfolgreich. Sie können ihn mit AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION außer Kraft setzen. |
AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION |
- |
Syntax für die Verwendung von AUTOSCHEMAOPTIONS als eigenständigen Parameter
Um AUTOSCHEMAOPTIONS als Standalone-Parameter in der Replicat-Parameterdatei zu aktivieren, verwenden Sie die folgende Syntax:
Syntax:
AUTOSCHEMAOPTIONS TYPEMAP '<datatype_src>' = '<datatype_tgt>'
AUTOSCHEMAOPTIONS TYPEMAP '<column_name>' = '<datatype_tgt>'
Beispiel:
AUTOSCHEMAOPTIONS TYPEMAP 'int'='bigint'
AUTOSCHEMAOPTIONS TYPEMAP 'smallint'='bigint'
AUTOSCHEMAOPTIONS TYPEMAP employee_no='bigint'
AUTOSCHEMAOPTIONS TYPEMAP "Employee&Name"='varchar(50)'
Syntax auf Zuordnungsebene
Um die AUTOSCHEMAOPTION-Klausel auf der Ebene MAP zu aktivieren, muss sie in Klammern eingeschlossen werden, wie in der folgenden Syntax dargestellt.
Syntax:
MAP src.table1, TARGET tgt.table1, AUTOSCHEMAOPTIONS (TYPEMAP 'int'='smallint');
Um mehrere AUTOSCHEMAOPTIONS-Klauseln wie TYPEMAP als Teil derselben MAP-Anweisung anzugeben, muss jede Option in Klammern eingeschlossen sein:
Syntax:
MAP src.table2, TARGET tgt.table2, AUTOSCHEMAOPTIONS (TYPEMAP 'smallint'='bigint','varchar(*)'='clob', employee_no='bigint', "Employee&Name"='varchar(50)');
Beispiele
Beispiel 1
So aktivieren Sie AUTOSCHEMAOPTIONS für alle Tabellen, die in der Replicat-Parameterdatei aufgeführt sind:
AUTOSCHEMAOPTIONS TYPEMAP 'int'='bigint'
DISCARDFILE ./dirrpt/RREP.dsc
MAP west.table1, TARGET east.table1;
MAP west.table2, TARGET east.table2;
MAP west.src*, TARGET east.tgt*;
Beispiel 2
So aktivieren Sie AUTOSCHEMAOPTIONS mit TYPEMAP 'int' = 'bigint' für alle Tabellen in der Parameterdatei replicat, und verwenden TYPEMAP 'clob'= 'varchar(2000)' zusätzlich nur für die Tabellen im Schema hr:
AUTOSCHEMAOPTIONS TYPEMAP 'int'= 'bigint'
MAP west.table1, TARGET east.table1;
MAP west.table2, TARGET east.table2;
MAP hr.src*, TARGET hr.*, AUTOSCHEMAOPTIONS (TYPEMAP 'varchar(2000)'='clob')
Jede Zeile der Parameterdatei wird sequenziell verarbeitet, und jede aufgelöste Zuordnung basiert auf dem aktuellen Status der globalen AutoSchema-Parameter zu diesem Zeitpunkt. Die auf MAP-Ebene angegebenen AutoSchema-Optionen hätten eine höhere Priorität als alle in Konflikt stehenden globalen AUTOSCHEMAOPTIONS-Optionen.
Beispiel: Wenn die Quelltabellen wie folgt erstellt wurden:
create table src.t111 (pkcol int not null primary key, smallintcol smallint);
create table src.t222 (pkcol int not null primary key, smallintcol smallint);
create table src.t333 (pkcol int not null primary key, smallintcol smallint);
Wenn die Replicat-Parameterdatei Folgendes enthält:
REPLICAT RTEST
USERIDALIAS ggeast
DDL AUTOSCHEMA INCLUDE ALL
discardfile ./dirrpt/irddl.dsc
AUTOSCHEMAOPTIONS TYPEMAP 'int'='bigint'
MAP src.t111, TARGET tgt.ran_t111;
MAP src.t222, TARGET tgt.ran_t222, AUTOSCHEMAOPTIONS ((TYPEMAP 'int'='smallint'));
AUTOSCHEMAOPTIONS TYPEMAP 'smallint'='bigint'
MAP src.t333, TARGET tgt.ran_t333;
Dann generiert AUTOSCHEMA die DDL für Zieltabellen wie folgt:
create table 'tgt.'ran_t111' ('pkcol' bigint not null, smallintcol smallint, primary key( 'pkcol'))
create table 'tgt'.'ran_t222' ('pkcol' smallint not null,`smallintcol` smallint, primary key('pkcol'))
create table 'tgt'.'ran_t333' ('pkcol' bigint not null,'smallintcol' bigint, primary key('pkcol'))