Перейти к основному содержанию
Перейти к основному содержанию

Очищение таблицы

Очищение (TRUNCATE) позволяет удалить данные из таблицы или базы данных, сохранив при этом саму таблицу или базу данных. Это облегчённая операция, которую нельзя отменить.

Команды TRUNCATE

Команда TRUNCATE в ClickHouse используется для быстрого удаления всех данных из таблицы или базы данных при сохранении их структуры.

TRUNCATE TABLE

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

ПараметрОписание
IF EXISTSПредотвращает ошибку, если таблица не существует. Если параметр опущен, запрос возвращает ошибку.
db.nameНеобязательное имя базы данных.
ON CLUSTER clusterВыполняет команду на указанном кластере.
SYNCДелает операцию TRUNCATE синхронной между репликами при использовании реплицируемых таблиц. Если параметр опущен, по умолчанию операция выполняется асинхронно.

Вы можете использовать настройку alter_sync для ожидания выполнения действий на репликах.

Вы можете указать, как долго (в секундах) ждать выполнения запросов TRUNCATE неактивными репликами с помощью настройки replication_wait_for_inactive_replica_timeout.

Примечание

Если параметр alter_sync установлен в значение 2 и некоторые реплики неактивны дольше времени, указанного в настройке replication_wait_for_inactive_replica_timeout, будет выброшено исключение UNFINISHED.

Запрос TRUNCATE TABLE не поддерживается для следующих движков таблиц:

TRUNCATE ALL TABLES

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 DATABASE не поддерживается для баз данных Replicated. Вместо этого просто выполните DROP и CREATE для базы данных.