45

varchar2(4000) 列に保存しようとしていたデータが大きすぎるという問題が発生したため、列を大量のテキスト データの保存に適したものに変更したいと考えています。具体的には、シリアル化された配列です。

  1. まず、この目的で使用するのに最適なデータ型は CLOB ですか? より適切なデータ型はありますか?

  2. 次に、通常の snyntax を使用して列を変更しようとすると、次のようになります。

    ALTER TABLE table MODIFY column CLOB
    

    次のエラーが表示されます: ORA-22858: データ型の変更が無効です

    データを失うことなくこのテーブルを変更する最も簡単な方法は何ですか?

4

3 に答える 3

67

varchar列からに移動する操作が許可されていない場合、最も簡単な方法はCLOB、新しい列を作成し、データを古い列から新しい列に移動することです。

ALTER TABLE some_table ADD (foo CLOB);
UPDATE some_table SET foo = old_column;
ALTER TABLE some_table DROP COLUMN old_column;
ALTER TABLE some_table RENAME COLUMN foo TO old_column;
于 2012-11-15T17:05:19.483 に答える