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_nameExemplos
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;
┌Considere a seguinte tabela no ClickHouse Cloud:
CREATE DATABASE base;
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;
1 testPodemos 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;
2També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;
3