次の表は、SQL Anywhere および Ultra Light のリモート・データ型がどのように IBM DB2 LUW の統合データ型にマッピングされるのかを示します。たとえば、リモート・データベースの BIT 型のカラムは、統合データベースでは SMALLINT 型である必要があります。
DB2 テーブルを作成する場合は、DB2 のページ・サイズに注意する必要があります。DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。テーブルに含まれる全カラムの長さがこの制限を超えることはできません。テーブルに BLOB または CLOB カラムがある場合は、BLOB または CLOB データを直接カウントするのではなく、LOB ロケータを使用してロー長をカウントできます。詳細については、DB2 のマニュアルを参照してください。
SQL Anywhere または Ultra Light のデータ型 |
IBM DB2 LUW のデータ型 |
注意 |
---|---|---|
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 の値が SQL Anywhere または Ultra Light の値より長い可能性があるので、ダウンロード時には値が大きすぎないことを確認してください。 |
DATE |
DATE |
SQL Anywhere と Ultra Light では、時刻の値は 00:00:00 の形式である必要があります。 |
DATETIME |
TIMESTAMP |
|
DECIMAL(p<32,s) |
DECIMAL(p,s) |
SQL Anywhere の DECIMAL の精度は 1 ~ 127 です。DB2 DECIMAL の最大精度は 31 です。 |
DECIMAL(p>=32,s) |
SQL Anywhere の DECIMAL で精度が 31 より大きいデータは、DB2 に同期できません。 |
|
DOUBLE |
DOUBLE |
DOUBLE は、丸め誤差が出る可能性がある概数値データ型です。種類の異なるコンピュータを使用すると、DOUBLE の基本となる記憶領域が異なることが多く、したがって、丸めの結果も異なります。プライマリ・キーは等しいかどうかの確認に使用されるので、プライマリ・キーで DOUBLE を使用することはおすすめできません。これは特に同期環境で言えます。特に、統合データベースはリモート・データベースとは異なるハードウェアで実行されることが多いからです。 |
FLOAT(1-24) |
REAL |
FLOAT はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。 |
FLOAT(25-53) |
DOUBLE |
FLOAT はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。 |
IMAGE |
BLOB(n) |
|
INTEGER |
INTEGER |
|
LONG BINARY |
BLOB(n) |
|
LONG NVARCHAR |
CLOB(n) |
DB2 のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合は、SQL Anywhere の LONG NVARCHAR を DB2 の CLOB に同期できます。Ultra Light には LONG NVARCHAR はありません。 |
LONG VARBIT |
CLOB(n) |
|
LONG VARCHAR |
CLOB(n) |
|
MONEY |
DECIMAL(19,4) |
|
NCHAR(c) |
VARCHAR(n) または CLOB(n) |
DB2 のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合は、NCHAR を DB2 の VARCHAR または CLOB に同期できます。SQL Anywhere の NCHAR のサイズは文字単位で、DB2 の VARCHAR のサイズはバイト単位です。VARCHAR にマッピングする場合は、NCHAR のバイト数の合計が MRL より大きくならないようにしてください。そのようにできない場合、NCHAR は CLOB にマッピングします。NCHAR(c) のバイト数の計算は簡単ではありませんが、おおよそ c=n/4 です。一般的には、c が MRL/4 より小さい場合は VARCHAR(n) にマッピングし、c が MRL/4 以上の場合は CLOB(n) にマッピングします。 |
NUMERIC(p<32,s) |
NUMERIC(p,s) |
|
NUMERIC(p>=32,s) |
DB2 のデータ型に対応するデータ型がありません。 |
|
NTEXT |
CLOB(n) |
DB2 のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合、NTEXT を DB2 の CLOB に同期できます。 |
NVARCHAR(c) |
VARCHAR(n) または CLOB(n) |
DB2 のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合、NVARCHAR を DB2 の VARCHAR または CLOB に同期できます。SQL Anywhere の NVARCHAR のサイズは文字単位で、DB2 の VARCHAR のサイズはバイト単位です。VARCHAR にマッピングする場合は、NVARCHAR のバイト数の合計が MRL より大きくならないようにしてください。そのようにできない場合、NVARCHAR は CLOB にマッピングします。NVARCHAR(c) のバイト数の計算は簡単ではありませんが、おおよそ c=n/4 です。一般的には、c が MRL/4 より小さい場合は VARCHAR(n) にマッピングし、c が MRL/4 以上の場合は CLOB(n) にマッピングします。 |
REAL |
REAL |
REAL はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。 |
SMALLDATETIME |
TIMESTAMP |
|
SMALLINT |
SMALLINT |
|
SMALLMONEY |
DECIMAL(10,4) |
|
TEXT |
CLOB(n) |
|
TIME |
TIMESTAMP または TIME |
小数点以下の秒がある SQL Anywhere と Ultra Light の TIME 値には、DB2 の TIMESTAMP が必要です。小数点以下の秒が常に 0 の SQL Anywhere と Ultra Light の TIME 値には、DB2 の TIME を使用できます。 |
TIMESTAMP |
TIMESTAMP |
|
TINYINT |
SMALLINT |
ダウンロードの場合、DB2 の値は負でない必要があります。 |
UNIQUEIDENTIFIER |
CHAR(36) |
|
UNIQUEIDENTIFIERSTR |
CHAR(36) |
UNIQUEIDENTIFIERSTR の DB2 での使用はおすすめしません。代わりに UNIQUEIDENTIFIER を使用してください。 |
UNSIGNED BIGINT |
DECIMAL(20) |
ダウンロードの場合、DB2 の値は負でない必要があります。 |
UNSIGNED INTEGER |
DECIMAL(11) |
ダウンロードの場合、DB2 の値は負でない必要があります。 |
UNSIGNED SMALLINT |
DECIMAL(5) |
ダウンロードの場合、DB2 の値は負でない必要があります。 |
UNSIGNED TINYINT |
SMALLINT |
ダウンロードの場合、DB2 の値は負でない必要があります。 |
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 の値が SQL Anywhere または Ultra Light の値より長い可能性があるので、ダウンロード時には値が大きすぎないことを確認してください。 |
XML |
CLOB(n) |
次の表は、IBM DB2 LUW の統合データ型がどのように SQL Anywhere および Ultra Light のリモート・データ型にマッピングされるのかを示します。たとえば、統合データベースの INT 型のカラムは、リモート・データベースでは INTEGER 型である必要があります。
DB2 テーブルを作成する場合は、DB2 のページ・サイズに注意する必要があります。DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。テーブルに含まれる全カラムの長さがこの制限を超えることはできません。テーブルに BLOB または CLOB カラムがある場合は、BLOB または CLOB データを直接カウントするのではなく、LOB ロケータを使用してロー長をカウントできます。詳細については、DB2 のマニュアルを参照してください。
IBM DB2 LUW のデータ型 | SQL Anywhere または Ultra Light のデータ型 | 注意 |
---|---|---|
BLOB |
LONG BINARY |
|
BIGINT |
BIGINT |
|
CHAR(n) |
VARCHAR(n) |
SQL Anywhere には DB2 の CHAR に対応するデータ型がありません。同期される統合データベースのカラムでは、CHAR を使用しないでください。DB2 の CHAR カラムを同期させる必要がある場合は、-b オプションを指定して Mobile Link サーバを実行してください。 |
CHAR(n) FOR BIT DATA |
BINARY(n) |
|
CLOB(n) |
LONG VARCHAR |
|
DATE |
DATE |
SQL Anywhere と Ultra Light では、時刻の値は 00:00:00 の形式である必要があります。 |
DBCLOB(n) |
LONG VARCHAR |
DBCLOB(n) データ型は 2 バイト文字用にのみ使用します。SQL Anywhere のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合、DBCLOB(n) は CLOB と同等です。 |
DECIMAL(p,s) |
DECIMAL(p,s) |
|
DOUBLE |
DOUBLE |
DOUBLE は、丸め誤差が出る可能性がある概数値データ型です。種類の異なるコンピュータを使用すると、DOUBLE の基本となる記憶領域が異なることが多く、したがって、丸めの結果も異なります。プライマリ・キーは等しいかどうかの確認に使用されるので、プライマリ・キーで DOUBLE を使用することはおすすめできません。これは特に同期環境で言えます。特に、統合データベースはリモート・データベースとは異なるハードウェアで実行されることが多いからです。 |
FLOAT |
DOUBLE |
FLOAT はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。 |
GRAPHIC(n) |
VARCHAR(2n) |
DB2 の GRAPHIC にはブランクが埋め込まれますが、SQL Anywhere の CHAR には埋め込まれません。このデータ型は使用しないことをおすすめします。 GRAPHIC データ型は 2 バイト文字用にのみ使用します。SQL Anywhere のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合、GRAPHIC は CHAR と同等です。 |
INT |
INTEGER |
|
LONG VARCHAR |
VARCHAR(32700) |
|
LONG VARCHAR FOR BIT DATA |
VARBINARY(32700) |
|
LONG VARGRAPHIC(n) |
VARCHAR(32700) |
LONG VARGRAPHIC データ型は 2 バイト文字用にのみ使用します。SQL Anywhere のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合、LONG VARGRAPHIC は LONG VARCHAR と同等です。 |
NUMERIC(p,s) |
NUMERIC(p,s) |
|
REAL |
REAL |
REAL はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。 |
SMALLINT |
SMALLINT |
|
TIME |
TIME |
SQL Anywhere TIME 値の小数点以下の秒の値は、ダウンロード時にトランケートされます。問題を回避するには、小数点以下の秒を使用しないでください。 |
TIMESTAMP |
TIMESTAMP |
|
VARCHAR(n) |
VARCHAR(n) |
|
VARCHAR(n) FOR BIT DATA |
VARBINARY(n) |
|
VARGRAPHIC(n) |
VARCHAR(2n) |
VARGRAPHIC データ型は 2 バイト文字用にのみ使用します。SQL Anywhere のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合、VARGRAPHIC は VARCHAR と同等です。 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |