2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oralce から データ移行する際の TRIM と 空白の NULL 化の仕様検討メモ

Posted at

移行方針概要

Oracle から他データベースに移行する際には次の仕様を移行する必要があり、移行先のデータベースにてどのように扱う方針を検討する必要がある。末尾のスペースを削除する必要があり、本記事ではその処理を RTRIM として記載する。

  1. CHAR 型にて不足している桁数に足りない場合にスペースをうめること
  2. 空白(例:``)の文字型を NULL として扱うこと *1
  3. Oracle SQL*Loader にて PRESERVE BLANKS を設定している場合、かつ、position 関数を利用していない場合に、CHAR 型、DATE 型、および、数値型の半角スペースを RTRIM すること *2
  4. 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 型以外の文字型に対して実施
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?