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_nameEjemplos
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;
┌Considere la siguiente tabla en 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 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;
2Tambié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;
3