INSERT INTO download_external_table
Содержание раздела
Запрос позволяет выгрузить данные, выбранные SELECT-подзапросом к логической базе данных, во внешний приемник данных. Данные можно выгружать из логических таблиц, логических и материализованных представлений.
Для получения небольшого объема данных можно использовать запрос данных.
Перед выполнением запроса необходимо создать внешнюю таблицу с указанием пути к топику Kafka. Подробнее о порядке выполнения действий для выгрузки данных см. в разделе Выгрузка данных.
Данные можно выгрузить из СУБД хранилища, выбранной для выгрузки данных в конфигурации системы (см. параметр EDML_DATASOURCE
), или любой указанной СУБД хранилища. Если в запросе не указана СУБД для выгрузки, данные выгружаются из СУБД, заданной в конфигурации системы. Чтобы выгрузить данные из другой СУБД, нужно добавить в запрос ключевое слово DATASOURCE_TYPE
с псевдонимом СУБД.
Запрос обрабатывается в порядке, описанном в разделе Порядок обработки запросов на выгрузку данных. В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
При успешном выполнении запроса данные выгружаются в том формате и в тот приемник данных, которые были указаны при создании внешней таблицы выгрузки. Формат данных соответствует описанному в разделе Формат выгрузки данных.
Синтаксис
INSERT INTO [db_name.]ext_table_name SELECT query
Параметры:
db_name
— имя логической базы данных, из которой выгружаются данные. Параметр опционален, если выбрана логическая БД, используемая по умолчанию;ext_table_name
— имя внешней таблицы выгрузки;query
— SELECT-подзапрос для выбора выгружаемых данных. Если в подзапросе указано ключевое словоDATASOURCE_TYPE
с псевдонимом СУБД хранилища, данные выгружаются из этой СУБД, иначе — из СУБД, выбранной для выгрузки в конфигурации системы.
Ограничения
- Выгружаемые данные должны быть доступны в СУБД хранилища, выбранной для выгрузки.
- Имена и порядок следования столбцов должны совпадать в SELECT-подзапросе на выгрузку данных и внешней таблице выгрузки.
- Выгрузка данных, выбранных с использованием агрегатных функций, из ADQM дает некорректные результаты. Ограничение связано с тем, что данные из сегментов кластера ADQM выгружаются параллельно и не объединяются.
Пример
Выгрузка из СУБД, заданной в конфигурации
INSERT INTO sales.sales_ext_download
SELECT * FROM sales.sales WHERE sales.product_units > 2
Выгрузка из указанной СУБД
INSERT INTO sales.sales_ext_download
SELECT * FROM sales.sales WHERE description = 'Покупка по акции 1+1' DATASOURCE_TYPE = 'adqm'
Выгрузка из материализованного представления
INSERT INTO sales.sales_by_stores_ext_download
SELECT * FROM sales.sales_by_stores WHERE product_code IN ('ABC0002', 'ABC0003', 'ABC0004') DATASOURCE_TYPE = 'adqm'