Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

REPLACE TABLE

Visão geral

A instrução REPLACE permite atualizar uma tabela de forma atômica.

Normalmente, para excluir alguns dados de uma tabela, você pode criar uma nova tabela e preenchê-la com uma instrução SELECT que não retorne os dados indesejados, depois remover a tabela antiga e renomear a nova. Essa abordagem é demonstrada no exemplo a seguir:

CREATE TABLE myNewTable AS myOldTable;

INSERT INTO myNewTable
SELECT * FROM myOldTable
WHERE CounterID <12345;

DROP TABLE myOldTable;

RENAME TABLE myNewTable TO myOldTable;

Em vez da abordagem acima, também é possível usar REPLACE (desde que você use os motores de banco de dados padrão) para alcançar o mesmo resultado:

REPLACE TABLE myOldTable
ENGINE = MergeTree()
ORDER BY CounterID
AS
SELECT * FROM myOldTable
WHERE CounterID <12345;

Sintaxe

{CREATE [OR REPLACE] | REPLACE} TABLE [db.]table_name

Exemplos

Considere a seguinte tabela:

CREATE DATABASE base
ENGINE = Atomic;

CREATE OR REPLACE TABLE base.t1
(
    n UInt64,
    s String
)
ENGINE = MergeTree
ORDER BY n;

INSERT INTO base.t1 VALUES (1, 'test');

SELECT * FROM base.t1;

Podemos usar a instrução REPLACE para remover todos os dados:

CREATE OR REPLACE TABLE base.t1
(
    n UInt64,
    s Nullable(String)
)
ENGINE = MergeTree
ORDER BY n;

INSERT INTO base.t1 VALUES (2, null);

SELECT * FROM base.t1;

Também podemos usar a instrução REPLACE para alterar a estrutura da tabela:

REPLACE TABLE base.t1 (n UInt64)
ENGINE = MergeTree
ORDER BY n;

INSERT INTO base.t1 VALUES (3);

SELECT * FROM base.t1;

Navigation