Tous les produits
Search
Centre de documentation

MaxCompute:TRUNCATE TABLE

Dernière mise à jour :Aug 10, 2026

Description

L'instruction TRUNCATE TABLE supprime toutes les données d'une table ou de partitions spécifiées, tout en préservant le schéma de la table, les autorisations et les métadonnées. Contrairement à l'instruction DROP TABLE, qui supprime intégralement la table, TRUNCATE TABLE conserve la structure de la table intacte, ce qui permet d'insérer immédiatement de nouvelles données. Cette opération est également nettement plus rapide que l'instruction DELETE, car elle n'analyse pas les lignes individuellement et ne journalise pas chaque suppression.

Syntaxe

Vider une table non partitionnée

TRUNCATE TABLE <table_name>;

Vider des partitions spécifiques

TRUNCATE TABLE <table_name> PARTITION <partition_spec>[, PARTITION <partition_spec>...];

Vider des partitions à l'aide d'une condition de filtrage

TRUNCATE TABLE <table_name> PARTITION <partition_filter_condition>;

Paramètres

|
**Paramètre**
|
**Obligatoire**
|
**Description**
| | --- | --- | --- | |
`table_name`
|
Oui
|
Nom de la table à vider. Pour les tables partitionnées, il s'agit du nom de la table partitionnée.
| |
`partition_spec`
|
Oui (pour les tables partitionnées sans filtre)
|
Spécification de la partition. Format : `(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)`. Spécifiez plusieurs partitions en séparant les spécifications par des virgules.
| |
`partition_filter_condition`
|
Oui (lors de l'utilisation d'un filtre)
|
Condition de filtre de partition (non sensible à la casse). Consultez la section [Détails sur les conditions de filtre de partition](#section_22a1700b) ci-dessous.
|

Composants de la spécification de partition :

  • partition_col : nom de la colonne de partition (non sensible à la casse).

  • partition_col_value : valeur de la partition (sensible à la casse).

Détails sur les conditions de filtre de partition

Le paramètre partition_filter_condition prend en charge les formats suivants :

  • partition (<partition_col> <comparison_operator> <partition_col_value>) -- Compare directement une colonne de partition.

  • partition (scalar(<partition_col>) <comparison_operator> <partition_col_value>) -- Applique une fonction scalaire avant la comparaison.

  • partition (<partition_filter_condition1> AND|OR <partition_filter_condition2>) -- Combine des conditions à l'aide d'opérateurs logiques.

  • partition (NOT <partition_filter_condition>) -- Négation d'une condition.

  • partition (<partition_filter_condition1>)[, partition (<partition_filter_condition2>), ...] -- Sépare plusieurs clauses de filtre par des virgules.

Composants de la condition de filtre :

  • partition_col : nom de la colonne de partition.

  • comparison_operator : opérateur de comparaison (tel que =, !=, >, <, LIKE, etc.).

  • partition_col_value : valeur de comparaison ou expression régulière correspondant au type de données de la colonne de partition.

  • scalar() : fonction scalaire qui traite la valeur de la colonne de partition avant la comparaison.

Opérateurs logiques :

  • NOT : renvoie le complément d'une condition de filtre de partition.

  • AND ou OR : combine plusieurs conditions de filtre de partition.

  • Plusieurs clauses de filtre de partition séparées par des virgules sont combinées selon une logique OR.

























Remarques d'utilisation

  • L'instruction TRUNCATE TABLE supprime les données, mais conserve le schéma de la table et la structure des colonnes. Pour supprimer entièrement la table, utilisez l'instruction DROP TABLE. Pour supprimer des lignes spécifiques en fonction d'une condition, utilisez l'instruction DELETE.

  • L'instruction TRUNCATE TABLE est plus rapide que l'instruction DELETE sans clause WHERE, car elle n'analyse pas les lignes individuellement. Pour les tables ou partitions volumineuses, privilégiez TRUNCATE TABLE lorsque vous devez supprimer l'intégralité des données.

  • MaxCompute prend en charge le vidage au niveau des partitions avec des conditions de filtre, ce qui permet un nettoyage en masse des données partitionnées sans avoir à spécifier chaque partition individuellement.

  • L'instruction TRUNCATE TABLE est une opération DDL (Data Definition Language). La suppression des données est irréversible une fois l'instruction exécutée avec succès.

Limites

  • L'instruction TRUNCATE TABLE s'applique uniquement aux tables. Elle ne peut pas être utilisée sur des vues ou des vues matérialisées.

  • Pour les tables partitionnées, une clause PARTITION est requise. L'exécution de l'instruction TRUNCATE TABLE sur une table partitionnée sans spécifier de partitions renvoie une erreur.

  • La partition spécifiée doit exister. Si une partition n'existe pas, l'instruction renvoie une erreur.

Exemples

Vider une table non partitionnée

-- Remove all data from the sales table
TRUNCATE TABLE sales;

Vider une table non partitionnée (de bout en bout)

L'exemple suivant illustre le cycle de vie complet : création d'une table, insertion de données, vidage de la table et vérification du résultat.

-- Create a simple table.
CREATE TABLE IF NOT EXISTS truncate_demo (id BIGINT, name STRING);

-- Insert sample data.
INSERT INTO TABLE truncate_demo VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Carol');

-- Verify that the data exists.
SELECT * FROM truncate_demo;

Résultat attendu :

+----+-------+
| id | name  |
+----+-------+
| 1  | Alice |
| 2  | Bob   |
| 3  | Carol |
+----+-------+
-- Truncate the table to remove all data.
TRUNCATE TABLE truncate_demo;

-- Verify that the table is now empty.
SELECT * FROM truncate_demo;

Résultat attendu :

+----+------+
| id | name |
+----+------+
+----+------+

Vider une seule partition

-- Remove sales records for December 2013 in Hangzhou region
TRUNCATE TABLE sale_detail PARTITION (sale_date='201312', region='hangzhou');

Vider plusieurs partitions

-- Remove sales records for December 2013 in both Hangzhou and Shanghai regions
TRUNCATE TABLE sale_detail
  PARTITION (sale_date='201312', region='hangzhou'),
  PARTITION (sale_date='201312', region='shanghai');

Vider des partitions à l'aide d'une condition de filtre

-- Remove all partitions in Hangzhou region where sale_date starts with '2013'
TRUNCATE TABLE sale_detail PARTITION (sale_date LIKE '2013%' AND region='hangzhou');

Vider des partitions à l'aide d'une fonction scalaire

-- Remove partitions using a scalar function to process the partition column
TRUNCATE TABLE sale_detail PARTITION (scalar(sale_date) > '201300');

Vider des partitions à l'aide de l'opérateur NOT

-- Remove all partitions except those in Hangzhou region
TRUNCATE TABLE sale_detail PARTITION (NOT region='hangzhou');

Vider des partitions à l'aide de la logique OR

-- Remove partitions matching multiple conditions (OR logic)
TRUNCATE TABLE sale_detail
  PARTITION (region='hangzhou'),
  PARTITION (region='shanghai');

Commandes associées

  • CREATE TABLE : crée des tables non partitionnées, des tables partitionnées, des tables externes ou des tables clusterisées

  • ALTER TABLE : modifie les opérations sur les tables

  • DROP TABLE : supprime des tables partitionnées ou non partitionnées

  • DESC TABLE/VIEW : affiche les informations relatives aux tables internes MaxCompute, aux vues, aux vues matérialisées, aux tables externes, aux tables clusterisées ou aux tables transactionnelles

  • SHOW : affiche les instructions SQL DDL (Data Definition Language), répertorie toutes les tables et vues d'un projet, ou répertorie toutes les partitions d'une table