Truncate permet de supprimer les données d’une table ou d’une base de données sans supprimer la table ou la base elle-même. Il s’agit d’une opération légère qui ne peut pas être annulée.
L’instruction TRUNCATE dans ClickHouse 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]
| Paramètre | Description |
|---|
IF EXISTS | Empêche une erreur si la table n’existe pas. Si cette clause est omise, la requête renvoie une erreur. |
db.name | Nom de la base de données facultatif. |
ON CLUSTER cluster | Exécute la commande sur le cluster spécifié. |
SYNC | Rend le tronquage synchrone sur les répliques lors de l’utilisation de tables répliquées. Si cette clause est omise, le tronquage est 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 attendre (en secondes) que des répliques inactives exécutent des requêtes TRUNCATE 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 au-delà de 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]
| Paramètre | 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]
| Paramètre | Description |
|---|
IF EXISTS | Évite une erreur si la base de données n’existe pas. |
db | Nom de la base de données. |
ON CLUSTER cluster | Exécute la commande sur l’ensemble d’un cluster donné. |
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, il suffit de DROP, puis de CREATE la base de données.