CREATE UPLOAD EXTERNAL TABLE

Содержание раздела
  1. Синтаксис
    1. Ключевое слово IF NOT EXISTS
    2. Ключевое слово LOCATION 'source_URI'
    3. Ключевое слово MESSAGE_LIMIT messages_per_segment
    4. Ключевое слово OPTIONS ('option=value[; ... ]')
  2. Варианты ответа
  3. Ограничения
  4. Примеры
    1. Таблица для загрузки данных в логическую таблицу
    2. Таблица для загрузки данных в standalone-таблицу

Поддерживается в версиях: 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.