Link Search Menu Expand Document

INSERT SELECT FROM upload_external_table

Содержание раздела
  1. Синтаксис
  2. Ограничения
  3. Примеры
    1. Загрузка данных в логическую таблицу
    2. Загрузка данных в standalone-таблицу

Запрос загружает данные из топика Kafka, указанного при создании внешней таблицы загрузки (upload_external_table), в логическую таблицу или standalone-таблицу.

Загружаемые данные должны соответствовать формату загрузки данных. Перед выполнением запроса необходимо создать внешнюю таблицу загрузки, если она отсутствует, и загрузить данные в топик Kafka. Подробнее о действиях по загрузке данных см. в разделе Загрузка данных.

При загрузке данных в standalone-таблицу нужно учитывать ее ограничения в конкретной СУБД.

Загрузка данных в логические и материализованные представления недоступна.

Для загрузки небольшого объема данных можно использовать обновление данных.

Запрос обрабатывается в порядке, описанном в разделе Порядок обработки запросов на загрузку данных.

В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

При успешном выполнении запроса данные загружаются в следующие СУБД хранилища:

  • в те СУБД, которые выбраны для размещения данных таблицы, — если данные загружаются в логическую таблицу;
  • в ту СУБД, которая содержит standalone-таблицу, — если данные загружаются в standalone-таблицу.

Расположение данных логической таблицы можно задавать запросами CREATE TABLE и DROP TABLE с ключевым словом DATASOURCE_TYPE.

При загрузке данных в standalone-таблицу ADG, в SELECT-подзапросе нужно указать поле bucket_id со значением 0 (см. пример ниже). В этом случае значение bucket_id рассчитается в ADG.

Незавершенную операцию по загрузке данных можно перезапустить или отменить. Подробнее о способах обработки незавершенных операций см. в разделе Управление операциями записи.

Синтаксис

Запрос с явным перечислением столбцов внешней таблицы загрузки:

INSERT INTO [db_name.]table_name SELECT column_list FROM [db_name.]upload_ext_table_name

Запрос с использованием символа *:

INSERT INTO [db_name.]table_name SELECT * FROM [db_name.]upload_ext_table_name

Параметры:

db_name

Имя логической базы данных. Опционально, если выбрана логическая БД, используемая по умолчанию.

table_name

Имя таблицы-приемника данных. Возможные значения:

column_list

Список имен всех столбцов внешней таблицы загрузки. Имена, типы и порядок указанных столбцов должны соответствовать именам, типам и порядку столбцов (полей) в таблице-приемнике данных, а также типам и порядку полей в топике Kafka, из которого загружаются данные.

upload_ext_table_name

Имя внешней таблицы загрузки.

В сообщениях Kafka, загружаемых в логические таблицы, должно присутствовать служебное поле sys_op с типом avro.int. Остальные поля сообщений Kafka должны соответствовать полям внешней таблицы загрузки по порядку и типам. Все поля внешней таблицы загрузки должны соответствовать полям таблицы-приемника данных по порядку, именам и типам.

Подробнее о требованиях к загружаемым данным см. в разделе Формат загрузки данных.

Ограничения

Загрузка данных в логическую таблицу возможна только при наличии открытой дельты (см. BEGIN DELTA).

Примеры

Загрузка данных в логическую таблицу

-- выбор логической базы данных по умолчанию
USE marketing;

-- открытие новой (горячей) дельты
BEGIN DELTA;

-- запуск загрузки данных в логическую таблицу sales
INSERT INTO sales SELECT * FROM sales_ext_upload;

-- закрытие дельты (фиксация изменений)
COMMIT DELTA;

Загрузка данных в standalone-таблицу

Загрузка в standalone-таблицу ADP, на которую указывает внешняя writable-таблица agreements_ext_write_adp:

INSERT INTO marketing.agreements_ext_write_adp SELECT * FROM marketing.agreements_ext_upload;

Загрузка в standalone-таблицу ADG, на которую указывает внешняя writable-таблица payments_ext_write_adg:

INSERT INTO marketing.payments_ext_write_adg SELECT *, 0 as bucket_id FROM marketing.payments_ext_upload;