Link Search Menu Expand Document

CREATE UPLOAD EXTERNAL TABLE

Содержание раздела
  1. Синтаксис
  2. Ограничения
  3. Примеры
    1. Таблица для загрузки в логическую таблицу
    2. Таблица для загрузки в standalone-таблицу

Запрос позволяет создать внешнюю таблицу загрузки в логической базе данных.

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

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

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

После успешного выполнения запроса можно выполнять запросы на загрузку данных. Подробнее о действиях по загрузке данных см. в разделе Загрузка данных.

Изменение внешней таблицы недоступно. Для замены внешней таблицы необходимо удалить ее и создать новую.

Синтаксис

CREATE UPLOAD EXTERNAL TABLE [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-таблицу.

Ограничения

  • Выполнение запроса недоступно в сервисной базе данных INFORMATION_SCHEMA.
  • Имена таблицы и ее столбцов должны начинаться с латинской буквы, после первого символа могут следовать латинские буквы, цифры и символы подчеркивания в любом порядке.
  • Таблица и ее столбцы не могут иметь имена, перечисленные в разделе Зарезервированные слова.

Примеры

Таблица для загрузки в логическую таблицу

CREATE UPLOAD EXTERNAL TABLE marketing.sales_ext_upload (
  id INT,
  transaction_date TIMESTAMP,
  product_code VARCHAR(256),
  product_units INT,
  store_id INT,
  description VARCHAR(256)
)
LOCATION  'kafka://zk1:2181,zk2:2181,zk3:2181/sales'
FORMAT 'AVRO'
MESSAGE_LIMIT 1000

Таблица для загрузки в standalone-таблицу

CREATE UPLOAD EXTERNAL TABLE marketing.payments_ext_upload (
  id INT NOT NULL,
  agreement_id INT,
  code VARCHAR(16),
  amount DOUBLE,
  currency_code VARCHAR(3),
  description VARCHAR
)
LOCATION  'kafka://$kafka/payments'
FORMAT 'AVRO'
OPTIONS ('auto.create.sys_op.enable=false')