Todos os produtos
Search
Central de documentação

MaxCompute:TRUNCATE TABLE

Última atualização: Jun 26, 2026

Descrição

O comando TRUNCATE TABLE remove todos os dados de uma tabela ou de partições específicas e preserva o esquema, as permissões e os metadados. Diferentemente do DROP TABLE, que exclui a tabela por completo, o TRUNCATE TABLE mantém a estrutura intacta para permitir a inserção imediata de novos dados. Essa operação também é significativamente mais rápida que o DELETE, pois não varre nem registra exclusões linha a linha.

Sintaxe

Truncar uma tabela não particionada

TRUNCATE TABLE <table_name>;

Truncar partições específicas

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

Truncar partições com condição de filtro

TRUNCATE TABLE <table_name> PARTITION <partition_filter_condition>;

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name

Sim

Nome da tabela a truncar. Em tabelas particionadas, refere-se ao nome da tabela particionada.

partition_spec

Sim (para tabelas particionadas sem filtro)

Especificação da partição. Formato: (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...). Especifique múltiplas partições separando as especificações por vírgulas.

partition_filter_condition

Sim (ao usar filtro)

Condição de filtro de partição (não diferencia maiúsculas de minúsculas). Consulte Detalhes da condição de filtro de partição abaixo.

Componentes da especificação de partição:

  • partition_col: Nome da coluna de partição (não diferencia maiúsculas de minúsculas).

  • partition_col_value: Valor da partição (diferencia maiúsculas de minúsculas).

Detalhes da condição de filtro de partição

O parâmetro partition_filter_condition aceita os seguintes formatos:

  • partition (<partition_col> <comparison_operator> <partition_col_value>) -- Compara diretamente uma coluna de partição.

  • partition (scalar(<partition_col>) <comparison_operator> <partition_col_value>) -- Aplica uma função escalar antes da comparação.

  • partition (<partition_filter_condition1> AND|OR <partition_filter_condition2>) -- Combina condições com operadores lógicos.

  • partition (NOT <partition_filter_condition>) -- Nega uma condição.

  • partition (<partition_filter_condition1>)[, partition (<partition_filter_condition2>), ...] -- Separa múltiplas cláusulas de filtro por vírgulas.

Componentes da condição de filtro:

  • partition_col: Nome da coluna de partição.

  • comparison_operator: Operador de comparação (como =, !=, >, <, LIKE, entre outros).

  • partition_col_value: Valor de comparação ou expressão regular compatível com o tipo de dado da coluna de partição.

  • scalar(): Função escalar que processa o valor da coluna de partição antes da comparação.

Operadores lógicos:

  • NOT: Retorna o complemento de uma condição de filtro de partição.

  • AND ou OR: Combina múltiplas condições de filtro de partição.

  • Múltiplas cláusulas de filtro de partição separadas por vírgulas usam a lógica OR.

Observações de uso

  • O TRUNCATE TABLE remove os dados, mas preserva o esquema e a estrutura das colunas. Para remover a tabela completamente, use DROP TABLE. Para excluir linhas específicas com base em uma condição, use DELETE.

  • O TRUNCATE TABLE é mais rápido que o DELETE sem cláusula WHERE, pois evita a varredura individual de linhas. Em tabelas ou partições grandes, prefira o TRUNCATE TABLE para remover todos os dados.

  • O MaxCompute oferece suporte a truncamento no nível de partição com condições de filtro. Isso permite limpar dados particionados em massa sem especificar cada partição individualmente.

  • O TRUNCATE TABLE é uma operação DDL. Não é possível desfazer a remoção dos dados após a execução bem-sucedida do comando.

Limites

  • O TRUNCATE TABLE aplica-se exclusivamente a tabelas. Não é possível usá-lo em views ou materialized views.

  • Em tabelas particionadas, a cláusula PARTITION é obrigatória. Executar o TRUNCATE TABLE em uma tabela particionada sem especificar partições gera erro.

  • A partição especificada deve existir. Caso contrário, o comando retorna erro.

Exemplos

Truncar uma tabela não particionada

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

Truncar uma tabela não particionada (ponta a ponta)

O exemplo a seguir demonstra o ciclo completo: criação da tabela, inserção de dados, truncamento e verificação do resultado.

-- 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;

Saída esperada:

+----+-------+
| 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;

Saída esperada:

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

Truncar uma única partição

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

Truncar múltiplas partições

-- 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');

Truncar partições com condição de filtro

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

Truncar partições usando uma função escalar

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

Truncar partições usando o operador NOT

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

Truncar partições usando lógica OR

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

Comandos relacionados

  • CREATE TABLE: Cria tabelas não particionadas, tabelas particionadas, tabelas externas ou tabelas clusterizadas.

  • ALTER TABLE: Modifica operações de tabela.

  • DROP TABLE: Exclui tabelas particionadas ou não particionadas.

  • DESC TABLE/VIEW: Visualiza informações sobre tabelas internas do MaxCompute, views, materialized views, tabelas externas, tabelas clusterizadas ou tabelas transacionais.

  • SHOW: Visualiza instruções SQL de Linguagem de Definição de Dados (DDL), lista todas as tabelas e views em um projeto ou lista todas as partições em uma tabela.