Die folgende Tabelle zeigt, wie entfernte SQL Anywhere- und UltraLite-Datentypen konsolidierten IBM DB2 LUW-Datentypen zugeordnet werden. Zum Beispiel sollte eine Spalte, die in der entfernten Datenbank den Datentyp BIT hat, in der konsolidierten Datenbank den Typ SMALLINT haben.
Wenn Sie eine IBM DB2 LUW-Tabelle erstellen, müssen Sie auf die DB2-Seitengröße achten. Für IBM DB2 LUW ist die maximale Zeilenlänge (MRL) von der Seitengröße abhängig: Die MRL beträgt 4005 bei einer Seitengröße von 4 kB, 8101 bei 8 kB, 16293 bei 16 kB und 32677 bei 32 kB. Die Länge der Spalten in einer Tabelle darf die oben genannten Grenzen nicht überschreiten. Falls eine Tabelle eine BLOB- oder CLOB-Spalte enthält, stellen Sie die Zeilenlänge mit dem LOB Locator fest, nicht direkt mit den BLOB- oder CLOB-Daten. Weitere Hinweise finden Sie in Ihrer IBM DB2 LUW-Dokumentation.
Datentyp in SQL Anywhere oder UltraLite | IBM DB2 LUW-Datentyp | Hinweise |
---|---|---|
BIGINT |
BIGINT |
|
BINARY(n<MRL) |
VARCHAR(n) FOR BIT DATA |
|
BINARY(n>=MRL) |
BLOB(n) |
|
BIT |
SMALLINT |
|
CHAR(n<MRL) |
VARCHAR(n) |
|
CHAR(n>=MRL) |
CLOB(n) |
IBM DB2 LUW-Werte können länger sein als SQL Anywhere- oder UltraLite-Werte. Stellen Sie daher sicher, dass beim Download keine zu großen Werte auftauchen. |
DATE |
DATE |
Für SQL Anywhere und UltraLite muss die Zeitangabe das Format 00:00:00 haben. |
DATETIME |
TIMESTAMP |
|
DECIMAL(p<32,s) |
DECIMAL(p,s) |
Die Gesamtstellenzahl des SQL Anywhere-Datentyps DECIMAL liegt zwischen 1 und 127. Die maximale Gesamtstellenzahl des IBM DB2 LUW-Datentyps beträgt 31. |
DECIMAL(p>=32,s) |
Daten des SQL Anywhere-Datentyps DECIMAL mit einer Gesamtstellenzahl von über 31 können nicht mit IBM DB2 LUW synchronisiert werden. |
|
DOUBLE |
DOUBLE |
DOUBLE ist ein ungenauer nummerischer Datentyp, der gerundet wird. Bei verschiedenen Computertypen ist die Basisspeicherung für DOUBLE oft unterschiedlich, was zu unterschiedlichem Runden führt. DOUBLE ist keine gute Wahl für einen Primärschlüssel, da bei Primärschlüsseln auf Gleichheit geprüft wird. Dies gilt besonders in einer Synchronisationsumgebung, da die konsolidierte Datenbank oft auf anderer Hardware läuft wie die entfernte Datenbank. |
FLOAT(1-24) |
REAL |
FLOAT kann Probleme verursachen, wenn die konsolidierten und entfernten Datenbanken nicht die exakt gleichen (ungenauen) Werte erlauben. Da nicht alle möglichen Werte getestet werden, ist Vorsicht angebracht. Um Probleme zu vermeiden, sollten Sie diese Typen nicht als Teil eines Primärschlüssels verwenden. |
FLOAT(25-53) |
DOUBLE |
FLOAT kann Probleme verursachen, wenn die konsolidierten und entfernten Datenbanken nicht die exakt gleichen (ungenauen) Werte erlauben. Da nicht alle möglichen Werte getestet werden, ist Vorsicht angebracht. Um Probleme zu vermeiden, sollten Sie diese Typen nicht als Teil eines Primärschlüssels verwenden. |
IMAGE |
BLOB(n) |
|
INTEGER |
INTEGER |
|
LONG BINARY |
BLOB(n) |
|
LONG NVARCHAR |
CLOB(n) |
Es gibt keinen entsprechenden Datentyp in IBM DB2 LUW. Falls es sich beim IBM DB2 LUW-Zeichensatz um Unicode handelt, kann der SQL Anywhere-Datentyp LONG NVARCHAR mit dem IBM DB2 LUW-Datentyp CLOB synchronisiert werden. UltraLite verfügt nicht über LONG NVARCHAR. |
LONG VARBIT |
CLOB(n) |
|
LONG VARCHAR |
CLOB(n) |
|
MONEY |
DECIMAL (19,4) |
|
NCHAR(c) |
VARCHAR(n) oder CLOB(n) |
Es gibt keinen entsprechenden Datentyp in IBM DB2 LUW. Falls es sich beim IBM DB2 LUW-Zeichensatz um Unicode handelt, kann der SQL Anywhere-Datentyp NCHAR mit dem IBM DB2 LUW-Datentyp VARCHAR oder CLOB synchronisiert werden. Die Größeneinheit ist beim SQL Anywhere-Datentyp NCHAR Zeichen und beim IBM DB2 LUW-Datentyp VARCHAR Byte. Im Fall einer Zuordnung zu VARCHAR darf die Gesamtzahl der Bytes von NCHAR nicht größer sein als MRL. Andernfalls sollte NCHAR CLOB zugeordnet werden. Es ist schwierig, die Anzahl der Bytes in NCHAR(c) zu berechnen, aber sie entspricht ungefähr c=nn/4. Allgemein gilt: Wenn c kleiner als MRL/4 ist, sollte zu VARCHAR(n) zugeordnet werden. Wenn dagegen c größer oder gleich MRL/4 ist, sollte zu CLOB(n) zugeordnet werden. |
NUMERIC(p<32,s) |
NUMERIC(p,s) |
|
NUMERIC(p>=32,s) |
Es gibt keinen entsprechenden Datentyp in IBM DB2 LUW. |
|
NTEXT |
CLOB(n) |
Es gibt keinen entsprechenden Datentyp in IBM DB2 LUW. Falls es sich beim IBM DB2 LUW-Zeichensatz um Unicode handelt, kann NTEXT mit dem IBM DB2 LUW-Datentyp CLOB synchronisiert werden. |
NVARCHAR(c) |
VARCHAR(n) oder CLOB(n) |
Es gibt keinen entsprechenden Datentyp in IBM DB2 LUW. Falls es sich beim IBM DB2 LUW-Zeichensatz um Unicode handelt, kann NVARCHAR mit dem IBM DB2 LUW-Datentyp VARCHAR oder CLOB synchronisiert werden. Die Größeneinheit ist beim SQL Anywhere-Datentyp NVARCHAR Zeichen und beim IBM DB2 LUW-Datentyp VARCHAR Byte. Im Fall einer Zuordnung zu VARCHAR darf die Gesamtzahl der Bytes von NVARCHAR nicht größer sein als MRL. Andernfalls sollte NVARCHAR CLOB zugeordnet werden. Es ist schwierig, die Anzahl der Bytes in NVARCHAR(c) zu berechnen, aber sie entspricht ungefähr c=n/4. Allgemein gilt: Wenn c kleiner als MRL/4 ist, sollte zu VARCHAR(n) zugeordnet werden. Wenn dagegen c größer oder gleich MRL/4 ist, sollte zu CLOB(n) zugeordnet werden. |
REAL |
REAL |
REAL kann Probleme verursachen, wenn die konsolidierten und entfernten Datenbanken nicht die exakt gleichen (ungenauen) Werte erlauben. Da nicht alle möglichen Werte getestet werden, ist Vorsicht angebracht. Um Probleme zu vermeiden, sollten Sie diese Typen nicht als Teil eines Primärschlüssels verwenden. |
SMALLDATETIME |
TIMESTAMP |
|
SMALLINT |
SMALLINT |
|
SMALLMONEY |
DECIMAL(10,4) |
|
ST_GEOMETRY |
ST_GEOMETRY |
|
TEXT |
CLOB(n) |
|
TIME |
TIMESTAMP oder TIME |
TIME-Werte in SQL Anywhere und UltraLite mit Sekundenbruchteilen erfordern den IBM DB2 LUW-Datentyp TIMESTAMP. TIME-Werte in SQL Anywhere und UltraLite mit Sekundenbruchteilen, die immer Null sind, können den IBM DB2 LUW-Datentyp TIME verwenden. Um die Gesamtstellenzahl einer TIME-Spalte beizubehalten, bindet der MobiLink-Server die TIME-Spalte immer an den ODBC-Datentyp SQL_TYPE_TIMESTAMP. Wenn die konsolidierte Datenbank auf einem DB2 9.7-Server läuft, müssen Sie die Spalte möglicherweise unter Verwendung von DB2-Konvertierungsfunktionen explizit zwischen TIMESTAMP und TIME konvertieren, falls die Spalte Teil eines Primärschlüssels ist. |
TIMESTAMP |
TIMESTAMP |
|
TIMESTAMP WITH TIME ZONE | VARCHAR(34) | Es gibt keinen äquivalenten Datentyp in IBM DB2 LUW. Aus diesem Grund sollte eine TIMESTAMP WITH TIME ZONE-Spalte einer VARCHAR(34)-Spalte zugeordnet werden. Beim Upload konvertiert der MobiLink-Server zunächst die Daten in eine Zeichenfolge mit dem Format JJJJ-MM-TT HH:NN:SS.SSSSSS [+|-]HH:NN und übernimmt sie anschließend in die konsolidierte Datenbank. Beim Download konvertiert er die Daten aus der Zeichenfolge in das Format TIMESTAMP WITH TIME ZONE. Vergewissern Sie sich, dass die Daten in der konsolidierten Datenbank diesem Format entsprechen, sonst schlägt der Download fehl. |
TINYINT |
SMALLINT |
Bei Downloads dürfen IBM DB2 LUW-Werte nicht negativ sein. |
UNIQUEIDENTIFIER |
CHAR(36) |
|
UNIQUEIDENTIFIERSTR |
CHAR(36) |
UNIQUEIDENTIFIERSTR wird für IBM DB2 LUW nicht empfohlen. Verwenden Sie stattdessen UNIQUEIDENTIFIER. |
UNSIGNED BIGINT |
DECIMAL (20) |
Bei Downloads dürfen IBM DB2 LUW-Werte nicht negativ sein. |
UNSIGNED INTEGER |
DECIMAL (11) |
Bei Downloads dürfen IBM DB2 LUW-Werte nicht negativ sein. |
UNSIGNED SMALLINT |
DECIMAL (5) |
Bei Downloads dürfen IBM DB2 LUW-Werte nicht negativ sein. |
UNSIGNED TINYINT |
SMALLINT |
Bei Downloads dürfen IBM DB2 LUW-Werte nicht negativ sein. |
VARBINARY(n<MRL) |
VARCHAR(n) FOR BIT DATA |
|
VARBINARY(n>=MRL) |
BLOB(n) |
|
VARBIT(n<MRL) |
VARCHAR(n) |
|
VARBIT(n>=MRL) |
CLOB(n) |
|
VARCHAR(n<MRL) |
VARCHAR(n) |
|
VARCHAR(n>=MRL) |
CLOB(n) |
IBM DB2 LUW-Werte können länger sein als SQL Anywhere- oder UltraLite-Werte. Stellen Sie daher sicher, dass beim Download keine zu großen Werte auftauchen. |
XML |
CLOB(n) |
Die folgende Tabelle zeigt, wie konsolidierte IBM DB2 LUW-Datentypen entfernten SQL Anywhere- und UltraLite-Datentypen zugeordnet werden. Zum Beispiel sollte eine Spalte, die in der konsolidierten Datenbank den Datentyp INT hat, in der entfernten Datenbank den Typ INTEGER haben.
Wenn Sie eine IBM LUW-Tabelle erstellen, müssen Sie auf die DB2-Seitengröße achten. Für IBM DB2 LUW ist die maximale Zeilenlänge von der Seitengröße abhängig: Die MRL beträgt 4005 bei einer Seitengröße von 4 kB, 8101 bei 8 kB, 16293 bei 16 kB und 32677 bei 32 kB. Die Länge der Spalten in einer Tabelle darf die oben genannten Grenzen nicht überschreiten. Falls eine Tabelle eine BLOB- oder CLOB-Spalte enthält, stellen Sie die Zeilenlänge mit dem LOB Locator fest, nicht direkt mit den BLOB- oder CLOB-Daten. Weitere Hinweise finden Sie in Ihrer IBM DB2 LUW-Dokumentation.
IBM DB2 LUW-Datentyp | Datentyp in SQL Anywhere oder UltraLite | Hinweise |
---|---|---|
BLOB |
LONG BINARY |
|
BIGINT |
BIGINT |
|
CHAR(n) |
VARCHAR(n) |
In SQL Anywhere gibt es kein Äquivalent zum IBM DB2 LUW-Datentyp CHAR. Sie sollten CHAR nicht in konsolidierten Datenbankspalten verwenden, die synchronisiert werden. Falls Sie CHAR-Spalten aus IBM DB2 LUW synchronisieren müssen, führen Sie den MobiLink-Server mit der Option -b aus. |
CHAR(n) FOR BIT DATA |
BINARY(n) |
|
CLOB(n) |
LONG VARCHAR |
|
DATE |
DATE |
Für SQL Anywhere und UltraLite muss die Zeitangabe das Format 00:00:00 haben. |
DB2GSE.ST_GEOMETRY |
ST_GEOMETRY |
|
DBCLOB(n) |
LONG VARCHAR |
Der Datentyp DBCLOB(n) wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Wenn es sich beim IBM DB2 LUW-Zeichensatz um Unicode handelt, ist DBCLOB(n) gleichwertig mit CLOB. |
DECIMAL(p,s) |
DECIMAL(p,s) |
|
DOUBLE |
DOUBLE |
DOUBLE ist ein ungenauer nummerischer Datentyp, der gerundet wird. Bei verschiedenen Computertypen ist die Basisspeicherung für DOUBLE oft unterschiedlich, was zu unterschiedlichem Runden führt. DOUBLE ist keine gute Wahl für einen Primärschlüssel, da bei Primärschlüsseln auf Gleichheit geprüft wird. Dies gilt besonders in einer Synchronisationsumgebung, da die konsolidierte Datenbank oft auf anderer Hardware läuft wie die entfernte Datenbank. |
FLOAT |
DOUBLE |
FLOAT kann Probleme verursachen, wenn die konsolidierten und entfernten Datenbanken nicht die exakt gleichen (ungenauen) Werte erlauben. Da nicht alle möglichen Werte getestet werden, ist Vorsicht angebracht. Um Probleme zu vermeiden, sollten Sie diese Typen nicht als Teil eines Primärschlüssels verwenden. |
GRAPHIC(n) |
VARCHAR(2n) |
Der IBM DB2 LUW-Datentyp GRAPHIC füllt mit Leerzeichen auf, der SQL Anywhere-Datentyp CHAR dagegen nicht. Es wird empfohlen, diesen Datentyp nicht zu verwenden. Der Datentyp GRAPHIC wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Wenn es sich beim IBM DB2 LUW-Zeichensatz um Unicode handelt, ist GRAPHIC gleichwertig mit CHAR. |
INT |
INTEGER |
|
LONG VARCHAR |
VARCHAR(32700) |
|
LONG VARCHAR FOR BIT DATA |
VARBINARY(32700) |
|
LONG VARGRAPHIC(n) |
VARCHAR(32700) |
Der Datentyp LONG VARGRAPHIC wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Wenn es sich beim IBM DB2 LUW-Zeichensatz um Unicode handelt, ist LONG VARGRAPHIC gleichwertig mit LONG VARCHAR. |
NUMERIC(p,s) |
NUMERIC(p,s) |
|
REAL |
REAL |
REAL kann Probleme verursachen, wenn die konsolidierten und entfernten Datenbanken nicht die exakt gleichen (ungenauen) Werte erlauben. Da nicht alle möglichen Werte getestet werden, ist Vorsicht angebracht. Um Probleme zu vermeiden, sollten Sie diese Typen nicht als Teil eines Primärschlüssels verwenden. |
SMALLINT |
SMALLINT |
|
TIME |
TIME |
Die Sekundenbruchteile von SQL Anywhere TIME-Werten werden beim Download weggekürzt. Um Probleme zu vermeiden, sollten Sie keine Sekundenwerte mit Bruchteilen verwenden. Um die Gesamtstellenzahl einer TIME-Spalte beizubehalten, bindet der MobiLink-Server die TIME-Spalte immer an den ODBC-Datentyp SQL_TYPE_TIMESTAMP. Wenn die konsolidierte Datenbank auf einem DB2 9.7-Server läuft, müssen Sie die Spalte möglicherweise unter Verwendung von DB2-Konvertierungsfunktionen explizit zwischen TIMESTAMP und TIME konvertieren, falls die Spalte Teil eines Primärschlüssels ist. |
TIMESTAMP |
TIMESTAMP |
|
VARCHAR(n) |
VARCHAR(n) |
|
VARCHAR(n) FOR BIT DATA |
VARBINARY(n) |
|
VARGRAPHIC(n) |
VARCHAR(2n) |
Der Datentyp VARGRAPHIC wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Wenn es sich beim IBM DB2 LUW-Zeichensatz um Unicode handelt, ist VARGRAPHIC gleichwertig mit VARCHAR. |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |