Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link リファレンス » リモート・データベースと統合データベース間での Mobile Link データ・マッピング

 

IBM DB2 LUW データのマッピング

IBM DB2 LUW の統合データ型へのマッピング

次の表は、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)

SQL Anywhere または Ultra Light のリモート・データ型へのマッピング

次の表は、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 と同等です。