エンタープライズ:特集 |
2003/08/24 11:32:00 更新 |
[JAVA Developer特別企画]2003年10月号
知っておきたいデータベース移行術「Oracle→DB2編」 (4/7)
JAVA Developer 2003年10月号より転載
■(2)データ型
OracleとDB2ではデータベースのデータ型が異なりますが、表4に従って機械的に対応付けできます。対応できないものは、Oracleの各データ型の表現可能な範囲が大きく、DB2の限界を超えている場合のみです。
対応付けでは、スペースを有効活用できるよう適切な型を選択したいものです。また、DB2ではCHARと比較してVARCHARは処理が重くなる傾向があるため、10バイト以下の短い文字列はCHAR型として定義するのが一般的です。
OracleのNCHARおよびNVARCHAR2型に関しては、データベース作成時のキャラクタセットの設定がDB2のコードページと同じであれば、CHARおよびVARCHARで対処できます。
表4 データ型対応表
|
Oracleのデータ型 |
対応するDB2のデータ型 |
数値 |
NUMBER(p)、またはNUMBER(p,0) |
1≦p≦4→SMALLINT |
5≦p≦9→INTEGER |
10≦p≦18→BIGINT |
19≦p≦31→DECIMAL(p)
ホスト変数の型タイプの変換が別途必要となる |
32≦p→DB2では桁数を表現できない |
NUMBER(p,s) |
DECIMAL(p,s)を使用 |
NUMBER
※この場合最大精度の指定と同じになり、領域は21バイト取られる |
NUMBERの使用状況に応じて、適切なDB2数値タイプに変換する。
たとえば、5桁未満の整数を使用しているにもかかわらずNUMBERを使用している場合、SMALLINTに置き換えることで18バイトの節約となる |
文字 |
CHAR(n)、またはNCHAR(n) |
1≦n≦254 →CHAR |
254<n→VARCHAR |
VARCHAR2(n)、またはNVARCHAR2(n) |
1≦n≦4→CHAR
VARCHARでもよいが、DB2は長さ管理に4バイト取るので、CHARのほうがスペースの無駄がない |
5≦n→VARCHAR |
LONG |
データの長さが32672バイト以下→VARCHAR |
データの長さが32673バイト以上→CLOB |
日付 |
DATE |
TIMESTAMPを使用。フォーマットは'YYYY-MM-DD-HH24.MI.SS' |
そのほか、日付のみ使用している場合にはDATE型(フォーマットは'YYYY-MM-DD')、時刻のみ使用している場合にはTIME型(フォーマットは'HH24-MI-SS')にするとスペースの無駄がない |
バイナリデータほか |
RAW(n) |
1≦n≦254→CHAR(n) FOR BIT DATA |
255≦n≦2000→VARCHAR(n) FOR BIT DATA |
※DB2では、FOR BIT DATAオプション指定をすることで、CHARおよびVARCHARに対して、列の内容を2進データとして扱うことができる |
LONG RAW(n) |
BLOB(n) |
BLOB |
BLOB(n)を使用(サイズは2GBまで) |
CLOB |
CLOB(n)を使用(サイズは2GBまで) |
NCLOB |
OracleのNLSキャラクタセット指定とDB2コードページが同じ場合は、CLOB(n)またはDBCLOB(n)で対処 |
BFILE |
BLOB(n)を使用(サイズは2GBまで) |
関連リンク
JAVA Developer
定期購読のご案内
バックナンバー販売協力店
|
JAVA Developer 10月号
大特集
再入門 J2SE
特集2 Oracle9i Application Server
[特別企画]
・例外処理のメカニズム
・データベース移行術(2) 「Oracle→DB2編」
・Tomcatで試すJava2セキュリティ
|
|
前のページ | 1 2 3 4 5 6 7 | 次のページ
[竹内 笑子,JAVA Developer]