Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

REPLACE TABLE

Descripción general

La sentencia REPLACE permite actualizar una tabla de forma atómica.

Por lo general, si necesita eliminar algunos datos de una tabla, puede crear una tabla nueva y rellenarla con una instrucción SELECT que no recupere los datos no deseados, y después eliminar la tabla antigua y cambiar el nombre de la nueva. Este enfoque se muestra en el siguiente ejemplo:

CREATE TABLE myNewTable AS myOldTable;

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

DROP TABLE myOldTable;

RENAME TABLE myNewTable TO myOldTable;

Como alternativa al enfoque anterior, también puede usar REPLACE (si utiliza los motores de base de datos predeterminados) para lograr el mismo resultado:

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

Sintaxis

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

Ejemplos

Considere la siguiente tabla:

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 la sentencia REPLACE para eliminar todos los datos:

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;

También podemos usar la sentencia REPLACE para modificar la estructura de la tabla:

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

INSERT INTO base.t1 VALUES (3);

SELECT * FROM base.t1;

Navigation