blob: ef63365d8079bdcc95419083ba3b186f3028d364 [file] [log] [blame] [view]
---
{
"title": "Replacing Atomic Table",
"language": "en",
"description": "Doris supports atomic replacement operations between two tables, applicable only to OLAP tables."
}
---
Doris supports atomic replacement operations between two tables, applicable only to OLAP tables.
## Applicable Scenarios
Sometimes, users need to rewrite table data, but deleting and then importing the data would result in a period of unavailability. In such cases, users can create a new table with the same structure using the `CREATE TABLE LIKE` statement, import the new data into the new table, and then perform an atomic replacement of the old table. For partition-level atomic overwrite operations, refer to the [temporary partition documentation](../delete/table-temp-partition).
## Syntax
```Plain
ALTER TABLE [db.]tbl1 REPLACE WITH TABLE tbl2
[PROPERTIES('swap' = 'true')];
```
Replace table `tbl1` with table `tbl2`.
If the `swap` parameter is `true`, after the replacement, the data in `tbl1` will be the original data in `tbl2`, and the data in `tbl2` will be the original data in `tbl1`, meaning the data in the two tables will be swapped.
If the `swap` parameter is `false`, after the replacement, the data in `tbl1` will be the original data in `tbl2`, and `tbl2` will be deleted.
## Principle
The table replacement function turns the following set of operations into an atomic operation.
Assuming table A is replaced with table B, and `swap` is `true`, the operations are as follows:
1. Rename table B to table A.
2. Rename table A to table B.
If `swap` is `false`, the operations are as follows:
1. Delete table A.
2. Rename table B to table A.
## Notes
- If the `swap` parameter is `false`, the replaced table (table A) will be deleted and cannot be recovered.
- The replacement operation can only occur between two OLAP tables and does not check if the table structures are consistent.
- The replacement operation will not change the original permission settings, as permission checks are based on table names.