移行方針概要
Oracle から他データベースに移行する際には次の仕様を移行する必要があり、移行先のデータベースにてどのように扱う方針を検討する必要がある。末尾のスペースを削除する必要があり、本記事ではその処理を RTRIM として記載する。
- CHAR 型にて不足している桁数に足りない場合にスペースをうめること
- 空白(例:``)の文字型を NULL として扱うこと *1
- Oracle SQL*Loader にて PRESERVE BLANKS を設定している場合、かつ、position 関数を利用していない場合に、CHAR 型、DATE 型、および、数値型の半角スペースを RTRIM すること *2
- Oracle SQL*Loader にて PRESERVE BLANKS を設定してない場合、かつ、position 関数を利用している場合に、CHAR 型、DATE 型、および、数値型の全角スペースと半角スペースを RTRIM すること
*1 CHAR 型の RTRIM を実行する場合には、CHAR 型のスペースを RTRIM したカラムをスペースと同等に扱う必要があり、NULL に変換するべきではない。
*2 RTRIM の対象のデータ型について、下記のドキュメントに記載あり。
CHAR
データ型日時および期間データ型
数値型
EXTERNAL
データ型:
INTEGER
EXTERNAL
FLOAT
EXTERNAL
- (パック)
DECIMAL
EXTERNAL
ZONED
(10進)EXTERNAL
引用元:空白の切捨てが可能なデータ型 (oracle.com)
移行方針
取り込みプログラム、ファイル形式、および、オプション別の、対応方法を次表に整理する。
取り込みプログラム | ファイル形式 | オプション1 | RTRIM 対応 |
---|---|---|---|
Pro*C | CSV(区切り文字区切り形式) | - | CHAR 型のカラムの半角スペースを RTRIMプログラムにて TRIM (or RTRIM)処理しているカラムの半角スペースを TRIM(or RTRIM) |
Pro*C | バイト区切りの固定長形式 | - | CHAR 型のカラムの半角スペースを RTRIMプログラムにて TRIM (or RTRIM)処理しているカラムの半角スペースを TRIM(or RTRIM) |
SQL*Loader | CSV(区切り文字区切り形式) | PRESERVE BLANKS なし | CHAR 型、DATE 型、および、数値型が設定されているカラムの半角スペースを RTRIMプログラムにて TRIM (or RTRIM)処理しているカラムの半角スペースを TRIM(or RTRIM) |
SQL*Loader | CSV(区切り文字区切り形式) | PRESERVE BLANKS あり | CHAR 型のカラムの半角スペースを RTRIMプログラムにて TRIM (or RTRIM)処理しているカラムの半角スペースを TRIM(or RTRIM) |
SQL*Loader | バイト区切りの固定長形式 | PRESERVE BLANKS なし | CHAR 型、DATE 型、および、数値型が設定されているカラムの全角スペースと半角スペースを RTRIMプログラムにて TRIM (or RTRIM)処理しているカラムの半角スペースを TRIM(or RTRIM) |
SQL*Loader | バイト区切りの固定長形式 | PRESERVE BLANKS あり | CHAR 型のカラムの半角スペースを RTRIMプログラムにて TRIM (or RTRIM)処理しているカラムの半角スペースを TRIM(or RTRIM) |
取り込みプログラム | ファイル形式 | オプション1 | 空白を NULL 化の対応 |
---|---|---|---|
Pro*C | CSV(区切り文字区切り形式) | - | すべての文字型のカラムを実施 |
Pro*C | バイト区切りの固定長形式 | - | CHAR 型以外の文字型に対して実施 |
SQL*Loader | CSV(区切り文字区切り形式) | PRESERVE BLANKS あり | すべての文字型のカラムを実施 |
SQL*Loader | CSV(区切り文字区切り形式) | PRESERVE BLANKS なし | すべての文字型のカラムを実施 |
SQL*Loader | バイト区切りの固定長形式 | PRESERVE BLANKS あり | CHAR 型以外の文字型に対して実施 |
SQL*Loader | バイト区切りの固定長形式 | PRESERVE BLANKS なし | CHAR 型以外の文字型に対して実施 |