エンタープライズ:特集 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特別企画]
知っておきたいデータベース移行術「Oracle→DB2編」
・データベースオブジェクト
・データ型
・ビルトイン関数
・SQL文
・ロックと読み取り一貫性

関連リンク
▼JAVA Developer
▼定期購読のご案内
▼バックナンバー販売協力店

JAVA Developer10月号表紙 JAVA Developer 10月号

大特集
再入門 J2SE

特集2 Oracle9i Application Server
[特別企画]
・例外処理のメカニズム
・データベース移行術(2)
 「Oracle→DB2編」
・Tomcatで試すJava2セキュリティ

前のページ | 1 2 3 4 5 6 7 | 次のページ

[竹内 笑子,JAVA Developer]