Die folgende Tabelle zeigt, wie entfernte SQL Anywhere- und UltraLite-Datentypen den 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 DB2-Tabelle erstellen, müssen Sie auf die DB2-Seitengröße achten. Für DB2 ist die maximale Zeilenlänge (MRL) von der Seitengröße abhängig: Die MRL beträgt 4005 bei einer Seitengröße von 4 KByte, 8101 bei 8 KByte, 16293 bei 16 KByte und 32677 bei 32 KByte. Die Länge der Spalten in einer Tabelle darf die obigen Grenzen nicht überschreiten. Falls eine Tabelle über eine BLOB oder CLOB-Spalte verfügt, stellen Sie die Zeilenlänge mit dem LOB Locator fest, nicht mit den BLOB oder CLOB-Daten direkt. Weitere Hinweise finden Sie in Ihrer DB2-Dokumentation.
Datentypen 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) |
DB2-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 Genauigkeit von SQL Anywhere DECIMAL liegt zwischen 1 und 127. Die maximale Genauigkeit von DB2 DECIMAL beträgt 31. |
DECIMAL(p>=32,s) |
Daten des Typs SQL Anywhere DECIMAL mit einer Genauigkeit von über 31 können nicht mit DB2 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 geprüft 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 geprüft 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 DB2. Falls es sich beim DB2-Zeichensatz um Unicode handelt, kann SQL Anywhere LONG NVARCHAR mit DB2 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 DB2. Falls es sich beim DB2-Zeichensatz um Unicode handelt, kann NCHAR mit DB2 VARCHAR oder CLOB synchronisiert werden. Bei der Größeneinheit von SQL Anywhere NCHAR handelt es sich um Zeichen und bei DB2 VARCHAR um Bytes. Falls Sie eine Zuordnung zu VARCHAR erstellen, 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 DB2. |
|
NTEXT |
CLOB(n) |
Es gibt keinen entsprechenden Datentyp in DB2. Falls es sich beim DB2-Zeichensatz um Unicode handelt, kann NTEXT mit DB2 CLOB synchronisiert werden. |
NVARCHAR(c) |
VARCHAR(n) oder CLOB(n) |
Es gibt keinen entsprechenden Datentyp in DB2. Falls es sich beim DB2-Zeichensatz um Unicode handelt, kann NVARCHAR mit DB2 VARCHAR oder CLOB synchronisiert werden. Bei der Größeneinheit von SQL Anywhere NVARCHAR handelt es sich um Zeichen und bei DB2 VARCHAR um Bytes. Falls Sie eine Zuordnung zu VARCHAR erstellen, 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 geprüft 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) |
|
TEXT |
CLOB(n) |
|
TIME |
TIMESTAMP oder TIME |
TIME-Werte in SQL Anywhere und UltraLite mit Sekundenbruchteilen benötigen DB2 TIMESTAMP. TIME-Werte in SQL Anywhere und UltraLite mit Sekundenbruchteilen, die immer Null sind, können DB2 TIME verwenden. |
TIMESTAMP |
TIMESTAMP |
|
TINYINT |
SMALLINT |
Bei Downloads dürfen DB2-Werte nicht negativ sein. |
UNIQUEIDENTIFIER |
CHAR(36) |
|
UNIQUEIDENTIFIERSTR |
CHAR(36) |
UNIQUEIDENTIFIERSTR wird für DB2 nicht empfohlen. Verwenden Sie stattdessen UNIQUEIDENTIFIER. |
UNSIGNED BIGINT |
DECIMAL (20) |
Bei Downloads dürfen DB2-Werte nicht negativ sein. |
UNSIGNED INTEGER |
DECIMAL (11) |
Bei Downloads dürfen DB2-Werte nicht negativ sein. |
UNSIGNED SMALLINT |
DECIMAL (5) |
Bei Downloads dürfen DB2-Werte nicht negativ sein. |
UNSIGNED TINYINT |
SMALLINT |
Bei Downloads dürfen DB2-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) |
DB2-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 DB2-Tabelle erstellen, müssen Sie auf die DB2-Seitengröße achten. Für DB2 ist die maximale Zeilenlänge von der Seitengröße abhängig: Die MRL beträgt 4005 bei einer Seitengröße von 4 KByte, 8101 bei 8 KByte, 16293 bei 16 KByte und 32677 bei 32 KByte. Die Länge der Spalten in einer Tabelle darf die obigen Grenzen nicht überschreiten. Falls eine Tabelle über eine BLOB oder CLOB-Spalte verfügt, stellen Sie die Zeilenlänge mit dem LOB Locator fest, nicht mit den BLOB oder CLOB-Daten direkt. Weitere Hinweise finden Sie in Ihrer DB2-Dokumentation.
IBM DB2 LUW-Datentyp | Datentypen in SQL Anywhere oder UltraLite | Hinweise |
---|---|---|
BLOB |
LONG BINARY |
|
BIGINT |
BIGINT |
|
CHAR(n) |
VARCHAR(n) |
In SQL Anywhere gibt es kein Äquivalent zu DB2 CHAR. Sie sollten CHAR nicht in konsolidierten Datenbankspalten verwenden, die synchronisiert sind. Falls Sie DB2 CHAR-Spalten 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. |
DBCLOB(n) |
LONG VARCHAR |
Der Datentyp DBCLOB(n) wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Falls es sich beim DB2-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 geprüft werden, ist Vorsicht angebracht. Um Probleme zu vermeiden, sollten Sie diese Typen nicht als Teil eines Primärschlüssels verwenden. |
GRAPHIC(n) |
VARCHAR(2n) |
DB2 GRAPHIC füllt mit Leerzeichen auf, SQL Anywhere 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. Falls es sich beim DB2-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. Falls es sich beim DB2-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 geprüft 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. |
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. Falls es sich beim DB2-Zeichensatz um Unicode handelt, ist VARGRAPHIC gleichwertig mit VARCHAR. |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |