blob: 61c0b4b91412be80e99cd8240d06db5f3174b475 [file] [view]
---
{
"title": "Atomic tableの置き換え",
"description": "Dorisは2つのtable間でのアトミック置換操作をサポートしており、OLAPTableにのみ適用可能です。",
"language": "ja"
}
---
Doris2つのtable間でのアトミック置換操作をサポートしており、OLAPTableにのみ適用可能です。
## 適用シナリオ
ユーザーがtableデータを書き換える必要がある場合がありますが、削除してからデータをインポートすると利用不可能な期間が発生してしまいます。このような場合、ユーザーは`CREATE TABLE LIKE`文を使用して同じ構造の新しいtableを作成し、新しいデータを新しいtableにインポートしてから、古いtableをアトミックに置換することができます。パーティションレベルのアトミック上書き操作については、[temporary partition documentation](../delete/table-temp-partition)を参照してください。
## 構文
```Plain
ALTER TABLE [db.]tbl1 REPLACE WITH TABLE tbl2
[PROPERTIES('swap' = 'true')];
```
Table `tbl1` Table `tbl2` で置き換えます。
`swap` パラメータが `true` の場合、置き換え後に `tbl1` のデータは元の `tbl2` のデータとなり、`tbl2` のデータは元の `tbl1` のデータとなります。つまり、2つのTableのデータが交換されます。
`swap` パラメータが `false` の場合、置き換え後に `tbl1` のデータは元の `tbl2` のデータとなり、`tbl2` は削除されます。
## 原理
Table置き換え機能は、以下の一連の操作をアトミック操作に変換します。
Table A Table B で置き換え、`swap` `true` の場合、操作は以下のとおりです:
1. Table B Table A にリネームする。
2. Table A Table B にリネームする。
`swap` `false` の場合、操作は以下のとおりです:
1. Table A を削除する。
2. Table B Table A にリネームする。
## 注意事項
- `swap` パラメータが `false` の場合、置き換えられるTableTable A)は削除され、復旧できません。
- 置き換え操作は2つのOLAPTable間でのみ実行でき、Table構造の一貫性はチェックされません。
- 置き換え操作は元の権限設定を変更しません。権限チェックはTable名に基づいて行われるためです。