Обрезать таблицу
Truncate позволяет удалить данные в таблице или базе данных, при этом сохраняя их существование. Это легковесная операция, которую нельзя отменить.
Удаление данных с помощью TRUNCATE
Команда TRUNCATE в ClickHouse используется для быстрого удаления всех данных из таблицы или базы данных при сохранении их структуры.
TRUNCATE TABLE
| Параметр | Описание |
|---|---|
IF EXISTS | Предотвращает ошибку, если таблица не существует. Если опущен, запрос возвращает ошибку. |
db.name | Необязательное имя базы данных. |
ON CLUSTER cluster | Выполняет команду на указанном кластере. |
SYNC | Делает удаление синхронным на репликах при использовании реплицированных таблиц. Если опущено, удаление происходит асинхронно по умолчанию. |
Вы можете использовать настройку alter_sync, чтобы настроить ожидание выполнения действий на репликах.
Вы можете указать, как долго (в секундах) ждать неактивные реплики для выполнения запросов TRUNCATE с помощью настройки replication_wait_for_inactive_replica_timeout.
Если alter_sync установлено в 2 и некоторые реплики неактивны более времени, указанного настройкой replication_wait_for_inactive_replica_timeout, то возникает исключение UNFINISHED.
Запрос TRUNCATE TABLE не поддерживается для следующих движков таблиц:
TRUNCATE ALL TABLES
| Параметр | Описание |
|---|---|
ALL | Удаляет данные из всех таблиц в базе данных. |
IF EXISTS | Предотвращает ошибку, если база данных не существует. |
db | Имя базы данных. |
LIKE | ILIKE | NOT LIKE '<pattern>' | Фильтрует таблицы по шаблону. |
ON CLUSTER cluster | Выполняет команду на кластере. |
Удаляет все данные из всех таблиц в базе данных.
TRUNCATE DATABASE
| Параметр | Описание |
|---|---|
IF EXISTS | Предотвращает ошибку, если база данных не существует. |
db | Имя базы данных. |
ON CLUSTER cluster | Выполняет команду на указанном кластере. |
Удаляет все таблицы из базы данных, но оставляет саму базу данных. Когда оператор IF EXISTS опущен, запрос возвращает ошибку, если база данных не существует.
TRUNCATE DATABASE не поддерживается для Replicated баз данных. Вместо этого просто используйте DROP и CREATE для базы данных.