Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

REPLACE TABLE

개요

REPLACE SQL 문을 사용하면 테이블을 원자적으로 업데이트할 수 있습니다.

일반적으로 테이블에서 일부 데이터를 삭제하려면, 원하지 않는 데이터를 조회하지 않는 SELECT 문을 사용해 새 테이블을 생성하고 데이터를 채운 후, 기존 테이블을 삭제하고 새 테이블의 이름을 변경할 수 있습니다. 아래 예시에서 이 방법을 확인할 수 있습니다:

CREATE TABLE myNewTable AS myOldTable;

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

DROP TABLE myOldTable;

RENAME TABLE myNewTable TO myOldTable;

위의 방법 대신 기본 데이터베이스 엔진을 사용하는 경우 REPLACE를 사용하여 동일한 결과를 얻을 수도 있습니다:

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

구문

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

예시

다음 테이블이 있다고 가정합니다.

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;

REPLACE SQL 문을 사용해 모든 데이터를 삭제할 수 있습니다.

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;

또는 REPLACE SQL 문을 사용해 테이블 구조를 변경할 수 있습니다.

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

INSERT INTO base.t1 VALUES (3);

SELECT * FROM base.t1;

Navigation