ALTER TABLE REPLACE
Описание
Атомарная замена двух таблиц. Эта операция применима только к таблицам OLAP.
ALTER TABLE [db.]tbl1 REPLACE WITH TABLE tbl2
[PROPERTIES('swap' = 'true')];
Заменяет таблицу tbl1 таблицей tbl2.
Если параметр swap имеет значение true, после замены таблица с именем tbl1 будет содержать данные исходной таблицы с именем tbl2. Таблица с именем tbl2 будет содержать данные исходной таблицы tbl1. Таким образом, данные двух таблиц поменяются местами.
Если параметр swap имеет значение false, после замены таблица tbl1 будет содержать данные таблицы tbl2. Таблица с именем tbl2 удаляется.
Принцип работы
Операция замены таблицы объединяет следующий набор действий в одну атомарную операцию.
Если вы хотите заменить таблицу A таблицей B и параметр swap имеет значение true, выполняются следующие действия:
- Таблица B переименовывается в таблицу A.
- Таблица A переименовывается в таблицу B.
Если swap имеет значение false, выполняются следующие действия:
- Таблица A удаляется.
- Таблица B переименовывается в таблицу A.
Примечания
- По умолчанию параметр
swapимеет значениеtrue. То есть операция замены таблицы эквивалентна обмену данными между двумя таблицами. - Если параметр
swapустановлен в false, заменяемая таблица (таблица A) будет удалена без возможности восстановления. - Операция замены возможна только между двумя таблицами OLAP. При этом соответствие структур этих таблиц не проверяется.
- Исходные настройки прав доступа не изменяются, поскольку проверка прав выполняется по имени таблицы.
Примеры
- Атомарно поменять местами
tbl1иtbl2без удаления таблиц (примечание: при замене с удалением фактически удаляется tbl1, а tbl2 переименовывается в tbl1).
ALTER TABLE tbl1 REPLACE WITH TABLE tbl2;
или
ALTER TABLE tbl1 REPLACE WITH TABLE tbl2 PROPERTIES('swap' = 'true');
- Атомарно заменить
tbl1таблицейtbl2с удалением таблицыtbl2(сохранитьtbl1и данные исходной таблицыtbl2)
ALTER TABLE tbl1 REPLACE WITH TABLE tbl2 PROPERTIES('swap' = 'false');
Ключевые слова
ALTER, TABLE, REPLACE, ALTER TABLE
Рекомендации по применению
- Атомарная перезапись данных
В некоторых случаях пользователю нужно перезаписать данные определённой таблицы. Однако если сначала удалить данные, а затем загрузить новые, в промежутке между этими действиями данные будут недоступны для просмотра. В таком случае можно сначала с помощью оператора CREATE TABLE LIKE создать новую таблицу с той же структурой, загрузить в неё новые данные, а затем атомарно заменить старую таблицу с помощью операции замены. Об атомарной перезаписи данных на уровне разделов см. документацию по временным разделам.