4.3.4 表原子替换¶
Doris
支持对两个表进行原子的替换操作。该操作仅适用于 OLAP
表。
1 适用场景¶
-
原子的覆盖写操作
-
某些情况下,用户希望能够重写某张表的数据,但如果采用先删除再导入的方式进行,在中间会有一段时间无法查看数据。这时,用户可以先使用
CREATE TABLE LIKE
语句创建一个相同结构的新表,将新的数据导入到新表后,通过替换操作,原子的替换旧表,以达到目的。分区级别的原子覆盖写操作,请参阅临时分区文档。
2 语法说明¶
SQL | |
---|---|
1 2 |
|
将表 tbl1
替换为表 tbl2
。
如果 swap
参数为 true
,则替换后,名称为 tbl1
表中的数据为原 tbl2
表中的数据。而名称为 tbl2
表中的数据为原 tbl1
表中的数据。即两张表数据发生了互换。
如果 swap
参数为 false
,则替换后,名称为 tbl1
表中的数据为原 tbl2
表中的数据。而名称为 tbl2
表被删除。
3 原理¶
替换表功能,实际上是将以下操作集合变成一个原子操作。
假设要将表 A
替换为表 B
,且 swap
为 true
,则操作如下:
-
将表
B
重名为表A
。 -
将表
A
重名为表B
。
如果 swap
为 false
,则操作如下:
-
删除表
A
。 -
将表
B
重名为表A
。
4 注意事项¶
-
swap
参数默认为true
。即替换表操作相当于将两张表数据进行交换。 -
如果设置
swap
参数为false
,则被替换的表(表A
)将被删除,且无法恢复。 -
替换操作仅能发生在两张
OLAP
表之间,且不会检查两张表的表结构是否一致。 -
替换操作不会改变原有的权限设置。因为权限检查以表名称为准。