表の再作成

Db2 表を再作成して、ストリング列の長さ属性または数字列の精度を減少させることができます。

プロシージャー

Db2 表を再作成するには、次の手順で行います。

  1. 元の CREATE TABLE ステートメントおよびその表 (例えば、表の名前を T1 とします) に関する すべての許可ステートメントが分かっていない場合は、カタログに照会して、その表の記述、その表に関するすべての索引とビューの記述、およびその表に関する特権を持って いるすべてのユーザーを判別する。
  2. 必要な属性を使用して新規の表を作成する (例えば、表の名前を T2 とします)。
  3. 次のいずれかの方法で、旧表 T1 から新規表 T2 へデータをコピーする。
    1. この場合は、次の INSERT ステートメントを発行します。

      汎用プログラミングインターフェース情報の開始。

      INSERT INTO T2
        SELECT * FROM T1;

      汎用プログラミングインターフェース情報の終了。

    2. LOAD ユーティリティーの INCURSOR オプションを使用して、旧表から新規表へデータをロードする。 このオプションは、 Db2 UDB ファミリーのクロスローダー機能を使用します。
  4. DROP TABLE T1 ステートメントを発行する。 T1 が明示的に作成された表スペースに属するただ 1 つの表であり、 コンプレッション・ディクショナリー (存在する場合) が失われても構わない場合は、表の代わりに表スペースをドロップできます。 表スペースをドロップすると、その表スペースがレクラメーション処理されます。
  5. DROP ステートメントをコミットする。
  6. ステートメント RENAME TABLE を使用して 表 T2 を T1 に名前変更する。
  7. 表 T1 を含む表スペースで REORG ユーティリティーを実行する。
  8. T1 にシノニム、索引、ビュー、および許可がある場合は、 再作成するようにユーザーに通知する。

次の作業

データ・タイプをストリングから数字へ、または数字からストリングへ 変更したい (例えば、INTEGER から CHAR、または CHAR から INTEGER) 場合は、SELECT ステートメント の CHAR および DECIMAL スカラー関数を使用して、変換を行います。 代わりに、以下の方法を使用することもできます。

  1. UNLOAD または REORG UNLOAD EXTERNAL を 使用して (アンロードするデータが 32 KB 未満の場合)、データを順次ファイルに保管する。
  2. 次に、LOAD ユーティリティーを使用して、表を再作成した後に再移植する。 表を再ロードするときには、新しい列定義に合うように LOAD ステートメントを 編集してください。

この方式は、大きい表を再作成しようとしている場合に特に効果があります。