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 メインフレーム・データのマッピング

DB2 メインフレームの統合データ型へのマッピング

次の表は、SQL Anywhere および Ultra Light のリモート・データ型がどのように DB2 メインフレームの統合データ型にマッピングされるのかを示します。たとえば、リモート・データベースの BIT 型のカラムは、統合データベースでは SMALLINT 型である必要があります。

SQL Anywhere または Ultra Light のデータ型

IBM DB2 メインフレームのデータ型

注意

BIGINT

DECIMAL(20)

BINARY(n<MRL)

VARCHAR(n) FOR BIT DATA

DB2 テーブルを作成する場合は、DB2 のページ・サイズに注意する必要があります。DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。テーブルに含まれる全カラムの長さがこの制限を超えることはできません。テーブルに BLOB または CLOB カラムがある場合は、BLOB または CLOB データを直接カウントするのではなく、LOB ロケータを使用してロー長をカウントできます。詳細については、DB2 のマニュアルを参照してください。

BINARY(n>=MRL)

BLOB(n)

DB2 テーブルを作成する場合は、DB2 のページ・サイズに注意する必要があります。DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。テーブルに含まれる全カラムの長さがこの制限を超えることはできません。テーブルに BLOB または CLOB カラムがある場合は、BLOB または CLOB データを直接カウントするのではなく、LOB ロケータを使用してロー長をカウントできます。詳細については、DB2 のマニュアルを参照してください。

BIT

SMALLINT

CHAR(n<MRL)

VARCHAR(n)

MRL は DB2 の最大ロー長です。

DB2 の VARCHAR が保持できるのは 32672 バイトまでです (ページ・サイズによって異なります)。

DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。詳細については、使用している DB2 のマニュアルを参照してください。

SQL Anywhere の CHAR は、SQL Anywhere の VARCHAR と同じです。

CHAR(n>=MRL)

CLOB(n)

DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。詳細については、使用している DB2 のマニュアルを参照してください。

SQL Anywhere の CHAR は、SQL Anywhere の VARCHAR と同じです。

DB2 の CLOB の値は、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 です。SQL Anywhere の DECIMAL で精度が 31 より大きいデータは、DB2 に同期できません。

DECIMAL(p>=32,s)

SQL Anywhere の DECIMAL で精度が 31 より大きいデータは、DB2 に同期できません。

DOUBLE

DOUBLE

DOUBLE はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。

正常に同期させるには、SQL Anywhere/Ultra Light の DOUBLE 値を DB2 メインフレームの DOUBLE 値の範囲内にしてください。

FLOAT(1-24)

REAL

FLOAT はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。

正常に同期させるには、DB2 メインフレームの REAL 値を SQL Anywhere/Ultra Light の REAL 値の範囲内にしてください。

FLOAT(25-53)

DOUBLE

FLOAT はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。

正常に同期させるには、SQL Anywhere/Ultra Light の DOUBLE 値を DB2 メインフレームの DOUBLE 値の範囲内にしてください。

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

BLOB(n)

LONG VARCHAR

CLOB(n)

MONEY

DECIMAL(19,4)

NCHAR(c)

VARCHAR(n) または CLOB(n)

SQL Anywhere の NCHAR は、SQL Anywhere の NVARCHAR と同じです。

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) にマッピングします。

NTEXT

CLOB(n)

SQL Anywhere の NTEXT は、SQL Anywhere の LONG NVARCHAR と同じです。

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 のデータ型に対応するデータ型がありません。

NVARCHAR(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) にマッピングします。

REAL

REAL

REAL はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。

正常に同期させるには、DB2 メインフレームの REAL 値を SQL Anywhere/Ultra Light の REAL 値の範囲内にしてください。

SMALLDATETIME

TIMESTAMP

SMALLINT

SMALLINT

SMALLMONEY

DECIMAL(10,4)

TEXT

CLOB(n)

SQL Anywhere の TEXT は、SQL Anywhere の LONG VARCHAR と同じです。

TIME

TIMESTAMP または TIME

小数点以下の秒がある SQL Anywhere と Ultra Light の TIME 値には、DB2 の TIMESTAMP が必要です。小数点以下の秒が常に 0 の SQL Anywhere と Ultra Light の TIME 値には、DB2 の TIME を使用できます。

TIMESTAMP

TIMESTAMP

TINYINT

SMALLINT

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

DB2 テーブルを作成する場合は、DB2 のページ・サイズに注意する必要があります。DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。テーブルに含まれる全カラムの長さがこの制限を超えることはできません。テーブルに BLOB または CLOB カラムがある場合は、BLOB または CLOB データを直接カウントするのではなく、LOB ロケータを使用してロー長をカウントできます。詳細については、DB2 のマニュアルを参照してください。

VARBINARY(n>=MRL)

BLOB(n)

DB2 テーブルを作成する場合は、DB2 のページ・サイズに注意する必要があります。DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。テーブルに含まれる全カラムの長さがこの制限を超えることはできません。テーブルに BLOB または CLOB カラムがある場合は、BLOB または CLOB データを直接カウントするのではなく、LOB ロケータを使用してロー長をカウントできます。詳細については、DB2 のマニュアルを参照してください。

VARBIT(n<MRL)

VARCHAR(n)

DB2 テーブルを作成する場合は、DB2 のページ・サイズに注意する必要があります。DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。テーブルに含まれる全カラムの長さがこの制限を超えることはできません。テーブルに BLOB または CLOB カラムがある場合は、BLOB または CLOB データを直接カウントするのではなく、LOB ロケータを使用してロー長をカウントできます。詳細については、DB2 のマニュアルを参照してください。

VARBIT(n>=MRL)

CLOB(n)

DB2 テーブルを作成する場合は、DB2 のページ・サイズに注意する必要があります。DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。テーブルに含まれる全カラムの長さがこの制限を超えることはできません。テーブルに BLOB または CLOB カラムがある場合は、BLOB または CLOB データを直接カウントするのではなく、LOB ロケータを使用してロー長をカウントできます。詳細については、DB2 のマニュアルを参照してください。

VARCHAR(n<MRL)

VARCHAR(n)

DB2 の VARCHAR が保持できるのは 32672 バイトまでです (ページ・サイズによって異なります)。

DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。詳細については、使用している DB2 のマニュアルを参照してください。

SQL Anywhere の CHAR は、SQL Anywhere の VARCHAR と同じです。

VARCHAR(n>=MRL)

CLOB(n)

DB2 には、ページ・サイズに基づく最大ロー長 (MRL) があります。ページ・サイズが 4K の場合の MRL は 4005 です。8K の場合は 8101、16K の場合は 16293、32K の場合は 32677 になります。詳細については、使用している DB2 のマニュアルを参照してください。

SQL Anywhere の CHAR は、SQL Anywhere の VARCHAR と同じです。

DB2 の CLOB の値は、SQL Anywhere または Ultra Light の値より長い可能性があります。ダウンロードされる値が大きすぎないことを確認する必要があります。

XML

CLOB(n)

SQL Anywhere の XML は、SQL Anywhere の LONG VARCHAR と同じです。

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

次の表は、DB2 メインフレームの統合データ型がどのように SQL Anywhere または Ultra Light のリモート・データ型にマッピングされるのかを示します。たとえば、統合データベースの INT 型のカラムは、リモート・データベースでは INTEGER 型である必要があります。

IBM DB2 メインフレームのデータ型 SQL Anywhere または Ultra Light のデータ型 注意

BLOB

LONG BINARY

CHAR(n)

VARCHAR(n)

SQL Anywhere には DB2 の CHAR に対応するデータ型がありません。同期される統合データベースのカラムでは、CHAR を使用しないでください。DB2 の CHAR カラムを同期させる必要がある場合は、-b オプションを指定して Mobile Link サーバを実行してください。

CHAR(n) FOR BIT DATA

BINARY(n)

SQL Anywhere には DB2 の CHAR に対応するデータ型がありません。同期される統合データベースのカラムでは、CHAR を使用しないでください。DB2 の CHAR カラムを同期させる必要がある場合は、-b オプションを指定して Mobile Link サーバを実行してください。

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 はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。

正常に同期させるには、SQL Anywhere/Ultra Light の DOUBLE 値を DB2 の DOUBLE 値の範囲内にしてください。

FLOAT

DOUBLE

FLOAT はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。

正常に同期させるには、SQL Anywhere/Ultra Light の DOUBLE 値を DB2 の DOUBLE 値の範囲内にしてください。

GRAPHIC(n)

VARCHAR(2n)

DB2 の GRAPHIC にはブランクが埋め込まれます。SQL Anywhere には DB2 の GRAPHIC に対応するデータ型がありません。同期される統合データベースのカラムでは、GRAPHIC を使用しないでください。

GRAPHIC データ型は 2 バイト文字用にのみ使用します。SQL Anywhere のデータ型に対応するデータ型がありません。DB2 の文字セットが Unicode の場合、GRAPHIC は CHAR と同等です。

INT

INTEGER

NUMERIC(p,s)

NUMERIC(p,s)

REAL

DOUBLE

REAL はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。

DB2 メインフレームでは、REAL、DOUBLE、FLOAT の範囲は同じであり、-7.2E+75 ~ 7.2E+75 です。負の数の最大値は約 -5.4E-79 であり、正の数の最小値は約 5.4E-79 です。SA/UL の REAL の範囲は -3.402823e+38 ~ 3.402823e+38 であり、DOUBLE の範囲は 2.22507385850721e-308 ~ 1.79769313486231e+308 です。正常に同期させるには、DB2 メインフレームの REAL は SA/UL の REAL の範囲内、SA/UL の DOUBLE は DB2 メインフレームの DOUBLE の範囲内である必要があります。

ROWID

SQL Anywhere または Ultra Light のデータ型に対応するデータ型がありません。ROWID は DB2 サーバによって維持されます。このデータ型は同期できません。

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 と同等です。