Nachkommastellen und Nachkommastellen
Verschiedene Datenbanken unterstützen unterschiedliche maximale Genauigkeit oder Skalierung für die Typen von Festpunktnummern.
Wenn der Typ der festen Quellpunktnummer größere Nachkommastellen oder Skalierungswerte als das Ziel unterstützt und eine mögliche Datenabschneiden für eine Nicht-KEY-Spalte vorgesehen ist, wird eine Warnmeldung angezeigt, und auf dem Ziel wird ein geeigneter String-Datentyp verwendet, um eine Datenabschneiden zu vermeiden. Wenn jedoch die Datenabschneiden für eine KEY-Spalte des Typs "Festpunktnummer" vorgesehen ist, wird Replicat mit der entsprechenden Fehlermeldung beendet. Sie müssen entweder AUTOSCHEMAOPTIONS TYPEMAP auswählen oder AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION verwenden, um fortzufahren.
In den folgenden Szenarios wird die Verwendung dieser Optionen beschrieben:
-
Wenn die Daten abgeschnitten werden sollen, wenn eine benutzerdefinierte Option (
AUTOSCHEMAOPTIONS TYPEMAPoderAUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION) angegeben ist, werden die Daten mit einer entsprechenden Warnmeldung abgeschnitten.Beispiel:
MySQL hat die maximale Dezimalgenauigkeit von 65, Oracle ist jedoch 38. Daher wird
DECIMAL(65,10)in OracleVARCHAR2zugeordnet.Die Zielskala kann automatisch angepasst werden, wobei das Genauigkeit/Skalierungsverhältnis beibehalten wird, wenn die Quellskala länger als die Zielgenauigkeit ist.
Beispiel:
Mit
AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATIONwird dieDECIMAL(65,40)von MySQLNUMBER(38,23)auf Oracle zugeordnet, und dieDECIMAL(65,64)von MySQL wirdNUMBER(38,37)auf Oracle zugeordnet. -
Der Typ
NUMBERohne explizite Genauigkeit und Skalierung wird wie folgt verarbeitet:Der Typ
NUMBERwird nur in Oracle und TimesTen unterstützt. In der Vorschauversion wird TimesTen nicht unterstützt. Wenn der QuelldatentypNUMBER(ohne explizite Nachkommastellen oder Skalierungen) lautet und die Zieldatenbank auch den DatentypNUMBERunterstützt, wird der ZieltypNUMBERauf dem Ziel verwendet.Wenn die Zieldatenbank den Datentyp
NUMBERnicht unterstützt, wird der geeignete Stringtyp wieVARCHARoderVARCHAR2auf dem Ziel verwendet.Beispiel:
NUMBER(5,-2)istDECIMAL(7,0)zugeordnet.NUMBER(1,2)istDECIMAL(2,2)zugeordnet. -
Wenn die in der Quellspalte verwendete Gesamtstellenzahl oder Skalierung größer ist als das, was auf dem Ziel unterstützt werden kann, und wenn die entsprechende Spalte Teil des Schlüssels ist, kann ein Stringtyp auf dem Ziel verwendet werden, um das Abschneiden von Daten auf dem Ziel zu vermeiden. Dadurch kann die Eindeutigkeitseigenschaft in der Zieltabelle abgeschnitten werden. Dies kann durch einen Parameter
AUTOSCHEMAOPTIONSgesteuert werden.