Перейти к содержимому
Последнее обновление

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, выполняются следующие действия:

  1. Таблица B переименовывается в таблицу A.
  2. Таблица A переименовывается в таблицу B.

Если swap имеет значение false, выполняются следующие действия:

  1. Таблица A удаляется.
  2. Таблица B переименовывается в таблицу A.

Примечания​

  1. По умолчанию параметр swap имеет значение true. То есть операция замены таблицы эквивалентна обмену данными между двумя таблицами.
  2. Если параметр swap установлен в false, заменяемая таблица (таблица A) будет удалена без возможности восстановления.
  3. Операция замены возможна только между двумя таблицами OLAP. При этом соответствие структур этих таблиц не проверяется.
  4. Исходные настройки прав доступа не изменяются, поскольку проверка прав выполняется по имени таблицы.

Примеры​

  1. Атомарно поменять местами tbl1 и tbl2 без удаления таблиц (примечание: при замене с удалением фактически удаляется tbl1, а tbl2 переименовывается в tbl1).
ALTER TABLE tbl1 REPLACE WITH TABLE tbl2;

или

ALTER TABLE tbl1 REPLACE WITH TABLE tbl2 PROPERTIES('swap' = 'true');
  1. Атомарно заменить tbl1 таблицей tbl2 с удалением таблицы tbl2 (сохранить tbl1 и данные исходной таблицы tbl2)
ALTER TABLE tbl1 REPLACE WITH TABLE tbl2 PROPERTIES('swap' = 'false');

Ключевые слова​

ALTER, TABLE, REPLACE, ALTER TABLE

Рекомендации по применению​

  1. Атомарная перезапись данных

В некоторых случаях пользователю нужно перезаписать данные определённой таблицы. Однако если сначала удалить данные, а затем загрузить новые, в промежутке между этими действиями данные будут недоступны для просмотра. В таком случае можно сначала с помощью оператора CREATE TABLE LIKE создать новую таблицу с той же структурой, загрузить в неё новые данные, а затем атомарно заменить старую таблицу с помощью операции замены. Об атомарной перезаписи данных на уровне разделов см. документацию по временным разделам.