CREATE UPLOAD EXTERNAL TABLE
Содержание раздела
Поддерживается в версиях: 7.0 / 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6 / 6.5 / 6.4 / 6.3 / 6.2 / 6.1 / 6.0 / 5.8 / 5.7 / 5.6 / 5.5 / 5.4 / 5.3 / 5.2 / 5.1 / 5.0.
Запрос позволяет создать внешнюю таблицу загрузки в логической базе данных.
По умолчанию создается таблица, которая предназначена для загрузки данных в логическую таблицу и содержит скрытое служебное поле sys_op
. Если загружаемые данные не содержат поле sys_op
(например, они предназначены для прокси-таблицы или standalone-таблицы), укажите в запросе ключевое слово OPTIONS
со значением auto.create.sys_op.enable=false
.
После успешного выполнения запроса можно выполнять запросы на загрузку данных. Подробнее о действиях по загрузке данных из Kafka см. в разделе Загрузка данных из Kafka.
Изменение внешней таблицы недоступно. Чтобы заменить внешнюю таблицу, удалите ее и создайте новую.
Синтаксис
CREATE UPLOAD EXTERNAL TABLE [IF NOT EXISTS] [db_name.]ext_table_name (
column_name data_type [ NULL | NOT NULL ]
[, ... ]
)
LOCATION 'source_URI'
FORMAT 'AVRO'
[MESSAGE_LIMIT messages_per_segment]
[OPTIONS ('option=value[; ... ]')]
Параметры:
db_name
-
Имя логической базы данных, в которой создается внешняя таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.
ext_table_name
-
Имя создаваемой внешней таблицы. Должно быть уникально среди всех логических сущностей логической БД, а также должно удовлетворять другим условиям, перечисленным в секции Ограничения.
Чтобы быстро различать разные типы внешних таблиц между собой, рекомендуется давать им имена, указывающие на тип таблицы, например
sales_ext_upload
. column_name
-
Имя столбца таблицы. Должно удовлетворять условиям, перечисленным в секции Ограничения.
data_type
-
Тип данных столбца
column_name
. Возможные значения см. в разделе Логические типы данных.
Ключевое слово IF NOT EXISTS
Включает проверку наличия внешней таблицы до попытки создания. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном создании внешней таблицы, иначе — только при успешном создании внешней таблицы.
Ключевое слово LOCATION 'source_URI'
Задает путь к топику Kafka, который будет источником загружаемых данных. Путь может быть указан любым из способов, перечисленных в разделе Формат пути к топику Kafka.
Ключевое слово MESSAGE_LIMIT messages_per_segment
Задает максимальное количество сообщений, загружаемых в одном блоке на один поток загрузки. Используется для загрузки в СУБД ADB; в другие СУБД данные загружаются по сообщениям, а не по блокам сообщений.
Если ключевое слово не указано, максимальное количество сообщений равно значению параметра конфигурации ADB_MPPW_DEFAULT_MESSAGE_LIMIT
.
Ключевое слово OPTIONS ('option=value[; ... ]')
Задает список дополнительных параметров (option
) и их значений (value
) из следующих:
auto.create.sys_op.enable
— признак добавления скрытого служебного поляsys_op
во внешнюю таблицу. Возможные значения:true
(по умолчанию) — добавить поле и использовать таблицу для загрузки данных в логическую таблицу;false
— не добавлять поле и использовать таблицу для загрузки данных в прокси-таблицу или standalone-таблицу.
Варианты ответа
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Ограничения
- Имена таблицы и ее столбцов должны соответствовать требованиям, описанным в разделе Соглашения об именах.
Примеры
Таблица для загрузки данных в логическую таблицу
CREATE UPLOAD EXTERNAL TABLE marketing.sales_ext_upload (
id BIGINT,
transaction_date TIMESTAMP,
product_code VARCHAR(256),
product_units BIGINT,
store_id BIGINT,
description VARCHAR(256)
)
LOCATION 'kafka_brokers://10.129.0.22:9092,10.129.0.123:9092/sales_in'
FORMAT 'AVRO'
MESSAGE_LIMIT 1000
Путь к топику Kafka в примере указан с использованием брокеров Kafka. Подробнее обо всех способах указания пути к топику см. в разделе Формат пути к топику Kafka.
Таблица для загрузки данных в standalone-таблицу
CREATE UPLOAD EXTERNAL TABLE marketing.payments_ext_upload (
id BIGINT NOT NULL,
agreement_id BIGINT,
code VARCHAR(16),
amount DOUBLE,
currency_code VARCHAR(3),
description VARCHAR
)
LOCATION 'kafka://$kafka/payments_in'
FORMAT 'AVRO'
OPTIONS ('auto.create.sys_op.enable=false')
Путь к топику Kafka в примере указан с использованием переменной. Подробнее обо всех способах указания пути к топику см. в разделе Формат пути к топику Kafka.