メインコンテンツへスキップ
メインコンテンツへスキップ

TRUNCATE ステートメント

ClickHouse における TRUNCATE ステートメントは、テーブルまたはデータベースからすべてのデータを高速に削除しつつ、その構造を保持するために使用されます。

TRUNCATE TABLE

TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster] [SYNC]

ParameterDescription
IF EXISTSテーブルが存在しない場合にエラーが発生するのを防ぎます。省略すると、このクエリはエラーを返します。
db.name任意のデータベース名。
ON CLUSTER cluster指定したクラスタ全体でコマンドを実行します。
SYNCレプリケートテーブルを使用している場合、レプリカ間での TRUNCATE 処理を同期的に実行します。省略した場合、既定では非同期で実行されます。

レプリカ上でアクションが実行されるまで待機するよう設定するには、alter_sync 設定を使用できます。

非アクティブなレプリカが TRUNCATE クエリを実行するまでに待機する時間(秒)を、replication_wait_for_inactive_replica_timeout 設定で指定できます。

:::note
alter_sync2 に設定されていて、一部のレプリカが replication_wait_for_inactive_replica_timeout 設定で指定された時間を超えて非アクティブな状態である場合、UNFINISHED という例外がスローされます。 :::

TRUNCATE TABLE クエリは、次のテーブルエンジンではサポートされていません

すべてのテーブルを TRUNCATE

TRUNCATE [ALL] TABLES FROM [IF EXISTS] db [LIKE | ILIKE | NOT LIKE '<pattern>'] [ON CLUSTER cluster]

ParameterDescription
ALLデータベース内のすべてのテーブルからデータを削除します。
IF EXISTSデータベースが存在しない場合でもエラーにならないようにします。
dbデータベース名。
LIKE | ILIKE | NOT LIKE '<pattern>'パターンでテーブルをフィルタリングします。
ON CLUSTER clusterクラスター全体でコマンドを実行します。

データベース内のすべてのテーブルからすべてのデータを削除します。

TRUNCATE DATABASE ステートメント

TRUNCATE DATABASE [IF EXISTS] db [ON CLUSTER cluster]

パラメーター説明
IF EXISTSデータベースが存在しない場合でもエラーになりません。
dbデータベース名。
ON CLUSTER cluster指定したクラスタ全体でコマンドを実行します。

データベース自体は残したまま、そのデータベース内のすべてのテーブルを削除します。句 IF EXISTS を省略すると、データベースが存在しない場合にクエリはエラーを返します。

注記

TRUNCATE DATABASEReplicated データベースではサポートされていません。代わりに、そのデータベースを DROP してから CREATE し直してください。