Vue d’ensemble
L’instruction REPLACE permet de mettre à jour une table de manière atomique.
Habituellement, si vous devez supprimer certaines données d’une table,
vous pouvez créer une nouvelle table et la remplir à l’aide d’une instruction SELECT qui ne récupère pas les données indésirables,
puis supprimer l’ancienne table et renommer la nouvelle.
Cette approche est illustrée dans l’exemple ci-dessous :
CREATE TABLE myNewTable AS myOldTable;
INSERT INTO myNewTable
SELECT * FROM myOldTable
WHERE CounterID <12345;
DROP TABLE myOldTable;
RENAME TABLE myNewTable TO myOldTable;Plutôt que d’adopter l’approche ci-dessus, vous pouvez également utiliser REPLACE (si vous utilisez les moteurs de base de données par défaut) pour obtenir le même résultat :
REPLACE TABLE myOldTable
ENGINE = MergeTree()
ORDER BY CounterID
AS
SELECT * FROM myOldTable
WHERE CounterID <12345;Syntaxe
{CREATE [OR REPLACE] | REPLACE} TABLE [db.]table_nameExemples
Prenons la table suivante :
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;
┌Nous pouvons utiliser l’instruction REPLACE pour supprimer toutes les données :
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;
┌Nous pouvons également utiliser l’instruction REPLACE pour modifier la structure de la table :
REPLACE TABLE base.t1 (n UInt64)
ENGINE = MergeTree
ORDER BY n;
INSERT INTO base.t1 VALUES (3);
SELECT * FROM base.t1;
┌Prenons la table suivante dans 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 testNous pouvons utiliser l’instruction REPLACE pour supprimer toutes les données :
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;
2Nous pouvons également utiliser l’instruction REPLACE pour modifier la structure de la table :
REPLACE TABLE base.t1 (n UInt64)
ENGINE = MergeTree
ORDER BY n;
INSERT INTO base.t1 VALUES (3);
SELECT * FROM base.t1;
3