TRUNCATE TABLE

テーブルからすべての行を削除しますが、テーブルはそのまま残します(テーブルに対するすべての権限と制約を含む)。また、テーブルのロードメタデータを削除します。これにより、コマンドの完了後に同じファイルをテーブルに再ロードできます。

これは DROP TABLE とは 異なり 、システムからテーブルを削除しますが、復元できるようにテーブルのバージョンを(ロード履歴とともに)保持することに注意してください。

こちらもご参照ください。

CREATE TABLE

構文

TRUNCATE [ TABLE ] [ IF EXISTS ] <name>

TRUNCATE [ TABLE ] [ IF EXISTS ] ERROR_TABLE( <base_table_name> )

パラメーター

name

切り捨てるテーブルの識別子を指定します。識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます(例えば、 "My Object")。

テーブル識別子が完全修飾されていない場合(db_name.schema_name.table_name または schema_name.table_name の形式)、コマンドは、セッションの現在のスキーマにあるテーブルを探します。

ERROR_TABLE( base_table_name )

指定されたベーステーブルに関連付けられたエラーテーブルを切り捨てます。エラーテーブルについて詳しくは、:ref:`label-data_load_overview_dml_error_logging`を参照してください。

識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます(例えば、 "My Object")。

テーブル識別子が完全修飾されていない場合(db_name.schema_name.table_name または schema_name.table_name の形式)、コマンドは、セッションの現在のスキーマにあるテーブルを探します。

使用上の注意

  • DELETE と TRUNCATE TABLE の両方が、データ保持期間中の(Time Travelを使用して)回復目的で削除されたデータを保持します。ただし、テーブルが切り捨てられると、ロードメタデータを回復できません。

  • TABLE キーワードは、テーブル名が完全修飾されているか、データベースとスキーマが現在セッションで使用されている場合、オプションです。

次の例では、テーブルを切り捨てます。

  1. 基本的なテーブルを作成し、データを挿入します。

    CREATE OR REPLACE TABLE temp_test_truncate (i number);
    
    INSERT INTO temp_test_truncate SELECT seq8() FROM table(generator(rowcount=>20)) v;
    
    SELECT COUNT (*) FROM temp_test_truncate;
    
    +-----------+
    | COUNT (*) |
    |-----------|
    |        20 |
    +-----------+
    
  2. テーブルを切り捨てます。

    TRUNCATE TABLE IF EXISTS temp_test_truncate;
    
  3. テーブルが空になったことを確認します。

    SELECT COUNT (*) FROM temp_test_truncate;
    
    +-----------+
    | COUNT (*) |
    |-----------|
    |         0 |
    +-----------+