CREATE UPLOAD EXTERNAL TABLE

Содержание раздела
  1. Синтаксис
    1. Ключевое слово IF NOT EXISTS
    2. Ключевое слово LOCATION
    3. Ключевое слово FORMAT
    4. Ключевое слово MESSAGE_LIMIT
    5. Ключевое слово OPTIONS
  2. Варианты ответа
  3. Ограничения
  4. Примеры
    1. Таблица для загрузки данных в логическую таблицу
    2. Таблица для загрузки данных в standalone-таблицу

Поддерживается в версиях:  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_1 datatype_1,
  column_name_2 datatype_2,
  column_name_3 datatype_3
)
LOCATION source_URI
FORMAT 'AVRO'
[MESSAGE_LIMIT messages_per_segment]
[OPTIONS 'option_list')]

Параметры:

db_name

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

ext_table_name

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

Чтобы можно было различать разные типы внешних таблиц между собой, рекомендуется давать им имена, указывающие на тип таблицы, например sales_ext_upload.

column_name_N

Имя столбца таблицы. Должно удовлетворять условиям, перечисленным в секции Ограничения.

datatype_N

Тип данных столбца column_name_N. Возможные значения см. в разделе Логические типы данных.

source_URI

Путь к топику Kafka (см. Формат пути к топику Kafka).

messages_per_segment

Максимальное количество сообщений, загружаемых в хранилище в составе одного блока на один поток загрузки. Значение подбирается в зависимости от параметров производительности инфраструктуры.

option_list

Список дополнительных параметров и их значений в формате option1=value1;option2=value2.... Возможные параметры:

  • auto.create.sys_op.enable — признак добавления скрытого служебного поля sys_op во внешнюю таблицу, возможные значения: true (по умолчанию) — добавить поле и использовать таблицу для загрузки данных в логическую таблицу, false — не добавлять поле и использовать таблицу для загрузки данных в прокси-таблицу или standalone-таблицу.

Ключевое слово IF NOT EXISTS

Ключевое слово IF NOT EXISTS включает проверку наличия внешней таблицы до попытки создания. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном создании внешней таблицы, иначе — только при успешном создании внешней таблицы.

Ключевое слово LOCATION

Ключевое слово LOCATION задает путь к топику Kafka, который будет источником загружаемых данных.

Ключевое слово FORMAT

Ключевое слово FORMAT задает формат загрузки данных. Возможное значение — 'AVRO'.

Ключевое слово MESSAGE_LIMIT

Ключевое слово MESSAGE_LIMIT задает максимальное количество сообщений, загружаемых в одном блоке на один поток загрузки. Используется для загрузки в СУБД ADB; в другие СУБД данные загружаются по сообщениям, а не по блокам сообщений.

Если ключевое слово и значение не указаны, максимальное количество сообщений равно значению параметра конфигурации ADB_MPPW_DEFAULT_MESSAGE_LIMIT.

Ключевое слово OPTIONS

Ключевое слово OPTIONS задает список дополнительных параметров и их значений. См. также параметр option_list.

Варианты ответа

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

  • пустой объект 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 > Формат пути к топику 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 > Формат пути к топику Kafka.