| エンタープライズ:特集 |
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]