跳至主要内容

如何使用 exchange 命令切换表

如何使用 exchange 命令切换表

问题

我如何使用 EXCHANGE 命令来切换表名?

答案

当您需要将当前表与另一个临时表进行切换时,EXCHANGE 命令非常有用,后者可能已经更新了主键或其他设置。 与 RENAME 命令相比,此操作是原子性的。 当您有触发源表的物化视图并试图避免重建视图时,它也很有用。

以下是一个简单的示例,说明其工作原理以及如何进行测试

  • 创建示例数据库
create database db1;
  • 创建示例表
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 命令来切换表
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 分钟阅读
    © . This site is unofficial and not affiliated with ClickHouse, Inc.