Dans ClickHouse, l’instruction TRUNCATE permet de supprimer rapidement toutes les données d’une table ou d’une base de données tout en en préservant la structure.
TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster] [SYNC]
| Parameter | Description |
|---|
IF EXISTS | Empêche une erreur si la table n’existe pas. Si elle est omise, la requête renvoie une erreur. |
db.name | Nom de base de données facultatif. |
ON CLUSTER cluster | Exécute la commande sur l’ensemble d’un cluster spécifié. |
SYNC | Rend la troncature synchrone sur les répliques lors de l’utilisation de tables répliquées. Si elle est omise, la troncature s’effectue de manière asynchrone par défaut. |
Vous pouvez utiliser le paramètre alter_sync pour configurer l’attente de l’exécution des actions sur les répliques.
Vous pouvez spécifier combien de temps (en secondes) attendre l’exécution des requêtes TRUNCATE par des répliques inactives avec le paramètre replication_wait_for_inactive_replica_timeout.
Si alter_sync est défini sur 2 et que certaines répliques restent inactives plus longtemps que la durée spécifiée par le paramètre replication_wait_for_inactive_replica_timeout, une exception UNFINISHED est levée.
La requête TRUNCATE TABLE n’est pas prise en charge pour les moteurs de table suivants :
TRUNCATE de toutes les tables
TRUNCATE [ALL] TABLES FROM [IF EXISTS] db [LIKE | ILIKE | NOT LIKE '<pattern>'] [ON CLUSTER cluster]
| Parameter | Description |
|---|
ALL | Supprime les données de toutes les tables de la base de données. |
IF EXISTS | Évite une erreur si la base de données n’existe pas. |
db | Le nom de la base de données. |
LIKE | ILIKE | NOT LIKE '<pattern>' | Filtre les tables selon un motif. |
ON CLUSTER cluster | Exécute la commande sur l’ensemble du cluster. |
Supprime toutes les données de toutes les tables d’une base de données.
TRUNCATE DATABASE [IF EXISTS] db [ON CLUSTER cluster]
| Parameter | Description |
|---|
IF EXISTS | Évite une erreur si la base de données n’existe pas. |
db | Le nom de la base de données. |
ON CLUSTER cluster | Exécute la commande sur le cluster spécifié. |
Supprime toutes les tables d’une base de données, tout en conservant la base de données elle-même. Lorsque la clause IF EXISTS est omise, la requête renvoie une erreur si la base de données n’existe pas.
TRUNCATE DATABASE n’est pas pris en charge pour les bases de données Replicated. À la place, supprimez la base de données avec DROP, puis recréez-la avec CREATE.