INSERT INTO logical_table
Запрос позволяет загрузить данные в логическую таблицу логической базы данных из внешнего источника данных. Загружаемые данные должны соответствовать формату, указанному при создании внешней таблицы загрузки и описанному в разделе Формат загрузки данных.
Примечание: загрузка данных возможна только в логическую таблицу. Загрузка данных в логические и материализованные представления недоступна.
Запрос обрабатывается в порядке, описанном в разделе Порядок обработки запросов на загрузку данных.
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
При успешном выполнении запроса данные загружаются в СУБД хранилища, выбранные для размещения данных таблицы. Месторасположение данных таблицы можно задавать запросами CREATE TABLE и DROP TABLE.
Примечания
- Перед выполнением запроса необходимо создать внешнюю таблицу, загрузить данные в топик Kafka и открыть дельту. Подробнее о порядке выполнения действий для загрузки данных см. в разделе Загрузка данных.
- Имена и порядок следования столбцов должны совпадать в топике Kafka, внешней таблице загрузке и запросе на загрузку данных. Исключением является служебное поле
sys_op
, которое обязательно для топика и опционально для внешней таблицы, но должно отсутствовать в запросе на загрузку данных при явном перечислении столбцов. Подробнее о требованиях к загружаемым данным см. в разделе Формат загрузки данных.
Синтаксис
Запрос с явным перечислением столбцов внешней таблицы:
INSERT INTO [db_name.]table_name SELECT column_list FROM [db_name.]ext_table_name
Запрос с использованием символа *
:
INSERT INTO [db_name.]table_name SELECT * FROM [db_name.]ext_table_name
Параметры
db_name
— имя логической базы данных. Опционально, если выбрана логическая БД, используемая по умолчанию;table_name
— имя логической таблицы, в которую загружаются данные;column_list
— список имен столбцов внешней таблицы загрузки. Должен включать все имена столбцов логической таблицы. Если внешняя таблица содержит служебное полеsys_op
, оно не указывается;ext_table_name
— имя внешней таблицы загрузки.
Ограничения
Выполнение запроса возможно только при наличии открытой дельты (см. BEGIN DELTA).
Пример
Пример загрузки данных с открытием и закрытием дельты:
-- открытие новой (горячей) дельты
BEGIN DELTA
-- запуск загрузки данных в логическую таблицу sales
INSERT INTO sales.sales SELECT * FROM sales.sales_ext_upload
-- закрытие дельты (фиксация изменений)
COMMIT DELTA