CREATE TABLE

Содержание раздела
  1. Синтаксис
    1. Ключевое слово DATASOURCE_TYPE
    2. Ключевое слово LOGICAL_ONLY
  2. Ограничения
  3. Примеры
    1. Создание таблицы с размещением данных во всех СУБД хранилища
    2. Создание таблицы с составным первичным ключом
    3. Создание таблицы с размещением данных в ADQM и ADG
    4. Создание таблицы только на логическом уровне

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

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

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

Для размещения данных логической таблицы только в некоторых СУБД хранилища можно указать ключевое слово DATASOURCE_TYPE (см. секцию Ключевое слово DATASOURCE_TYPE).

Совет: рекомендуется создавать логическую таблицу с размещением данных, как минимум, в СУБД хранилища, из которой планируется выгрузка данных. Иначе выгрузка данных из таблицы будет недоступна. Подробнее о СУБД, из которых можно выгружать данные, см. в разделе INSERT INTO download_external_table.

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

Синтаксис

CREATE TABLE [db_name.]table_name (
  column_name_1 datatype_1 NOT NULL,
  column_name_2 datatype_2 DEFAULT default_value_2,
  column_name_3 datatype_3,
  PRIMARY KEY (column_list_1)
) DISTRIBUTED BY (column_list_2)
[DATASOURCE_TYPE (datasource_aliases)]
[LOGICAL_ONLY]

Где:

  • db_name — имя логической базы данных, в которой создается логическая таблица. Указывается опционально, если выбрана логическая БД, используемая по умолчанию;
  • table_name — имя создаваемой логической таблицы, уникальное среди логических сущностей логической БД;
  • column_name_N — имя столбца таблицы;
  • datatype_N — тип данных столбца column_name_N. Возможные значения см. в разделе Логические типы данных;
  • default_value_N — значение столбца column_name_N по умолчанию;
  • column_list_1 — список столбцов, входящих в первичный ключ таблицы;
  • column_list_2 — список столбцов целочисленного типа, входящих в ключ шардирования таблицы. Столбцы должны быть из числа столбцов column_list_1;
  • datasource_aliases — список псевдонимов СУБД хранилища, в которых нужно разместить данные таблицы. Элементы списка перечисляются через запятую. Возможные значения: adb, adqm, adg. Значения можно указывать без кавычек (например, adb) или двойных кавычках (например, "adb").

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

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

Если ключевое слово не указано, данные таблицы размещаются во всех доступных СУБД хранилища.

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

Ключевое слово LOGICAL_ONLY позволяет создать логическую таблицу только на логическом уровне (в логической схеме данных), без пересоздания связанных физических таблиц в хранилище данных.

Если ключевое слово не указано, создается как логическая, так и связанные с ней физические таблицы.

Ограничения

  • Имена столбцов должны быть уникальны в рамках логической таблицы.
  • Недопустимо использование зарезервированных имен столбцов: sys_op, sys_from, sys_to, sys_close_date, bucket_id, sign.
  • Первичный ключ должен включать все столбцы ключа шардирования.
  • Ключ шардирования может содержать только целочисленные столбцы.

Примеры

Создание таблицы с размещением данных во всех СУБД хранилища

CREATE TABLE sales.sales (
  id INT NOT NULL,
  transaction_date TIMESTAMP NOT NULL,
  product_code VARCHAR(256) NOT NULL,
  product_units INT NOT NULL,
  store_id INT NOT NULL,
  description VARCHAR(256),
  PRIMARY KEY (id)
)
DISTRIBUTED BY (id)

Создание таблицы с составным первичным ключом

CREATE TABLE sales.stores (
  id INT NOT NULL,
  category VARCHAR(256) NOT NULL,
  region VARCHAR(256) NOT NULL,
  address VARCHAR(256) NOT NULL,
  description VARCHAR(256),
  PRIMARY KEY (id, region)
)
DISTRIBUTED BY (id)

Создание таблицы с размещением данных в ADQM и ADG

CREATE TABLE sales.clients (
  id INT NOT NULL,
  first_name VARCHAR(256) NOT NULL,
  last_name VARCHAR(256) NOT NULL,
  patronymic_name VARCHAR(256),
  birth_date DATE,
  PRIMARY KEY (id)
) DISTRIBUTED BY (id)
DATASOURCE_TYPE (adqm,adg)

Создание таблицы только на логическом уровне

CREATE TABLE sales.sales1 (
  id INT NOT NULL,
  transaction_date TIMESTAMP NOT NULL,
  product_code VARCHAR(256) NOT NULL,
  product_units INT NOT NULL,
  store_id INT NOT NULL,
  description VARCHAR(256),
  PRIMARY KEY (id)
)
DISTRIBUTED BY (id)
LOGICAL_ONLY