如何使用 exchange 命令切换表
我如何使用 EXCHANGE 命令来切换表名?
当您需要将当前表与另一个临时表进行切换时,EXCHANGE 命令非常有用,后者可能已经更新了主键或其他设置。 与 RENAME 命令相比,此操作是原子性的。 当您有触发源表的物化视图并试图避免重建视图时,它也很有用。
以下是一个简单的示例,说明其工作原理以及如何进行测试
create table db1.table1_exchange
(
id Int32,
string_field String
)
engine = MergeTree()
order by id;
insert into db1.table1_exchange
values
(1, 'a');
create table db1.table1_exchange_temp
(
id Int32,
string_field String
)
engine = MergeTree()
order by id;
insert into db1.table1_exchange_temp
values
(2, 'b');
exchange tables db1.table1_exchange and db1.table1_exchange_temp;
select * from db1.table1_exchange;
┌─id─┬─string_field─┐
│ 2 │ b │
└────┴──────────────┘
1 row in set. Elapsed: 0.002 sec.
·2 分钟阅读