2010-12-21 8 views
5

一連の大きなテキストファイルを格納するテーブルをOracleで作成する必要があります。 Oracleのデータ型を調べた後、ファイルを格納するためにどのタイプを使用すべきかは不明です。テキストファイル用のOracle Data Type?

VARCHAR2のようなテキスト固有のタイプの制限は非常に小さいようです(32K)。その他のタイプは、テキストファイル(BFILEなど)の正しい一致ではないようです。

誰にでも正しいタイプの意見がありますか?

+2

32KはPL/SQLにのみ適用されます。表または通常のSQLでは、VARCHAR2は最大4000バイトしか格納できません。 –

答えて

9

CLOBとBLOB/BFILEの違いは、CLOBがテキストとして扱われることです。つまり、データベースからCLOBを引き出すと、データベースの文字セットからクライアントの文字セットに必要な変換が実行されます(たとえば、êからアクセントを削除するなど)。同様に、クライアントによってCLOBが作成されると、クライアント・キャラクタ・セットからデータベース・キャラクタ・セットへの変換が可能です。クライアント・キャラクタ・セットとデータベース・キャラクタ・セットの両方が同じ場合、変換は必要なく、実行されません。

NCLOBは、データベース・キャラクタ・セットではなく、NLS NCHARキャラクタ・セットを使用する点を除いて、CLOBと似ています。

BLOB/BFILEは変換ルールの対象にはなりません。

一般的に私はテキストにCLOBを使用しますが、文字セット変換のわずかな可能性も望んでいないチェックサム/監査証跡ロジックがある場合は、BLOB/BFILEを選択することがあります。私はロングまたはロングRAWを考慮しません。

1

を使用すると、CLOBまたは文字データのLOBデータ型はCLOBおよびNCLOBある

+2

ここで、Longは推奨されていません。可能であればCLOBを使用してください(ご使用のOracleのバージョンが古くない場合は可能です)。 – Thilo

1

ロングのいずれかを使用しているOracleのバージョンに依存します。 最大8テラバイトの文字データ(CLOB)または各国語キャラクタ・セット・データ(NCLOB)を格納できます。

後で、既存のLONG RAW列をLOB列に変換することをお薦めします。 LOB列は、LONG列よりもはるかに少ない制約を受けます。さらに、LOB機能はすべてのリリースで拡張されていますが、LONG RAW機能はいくつかのリリースで静的です。

関連する問題