Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Вы находитесь на странице архива. Актуальная документация доступна по ссылке.

CREATE TABLE

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

Поддерживается в версиях:  6.1 / 6.0 / 5.8 / 5.7 / 5.6.1 / 5.5 / 5.4 / 5.3 / 5.2 / 5.1 / 5.0.

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

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

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

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

По умолчанию система создает физические таблицы во всех датасорсах инсталляции. Это означает, что при внесении изменений в логическую таблицу система вносит эти изменения во все датасорсы. Чтобы разместить данные логической таблицы только в некоторых датасорсах, укажите в запросе CREATE TABLE ключевое слово DATASOURCE_TYPE со списком датасорсов.

Ошибка выполнения корректного запроса блокирует последующие запросы в этой логической базе данных. В случае блокировки устраните причины сбоя и повторите сбойную операцию. Если повторение операции невозможно, удалите сбойную операцию запросом ERASE_CHANGE_OPERATION и вручную устраните несоответствия на физическом уровне (если такие есть).

Каждое создание таблицы записывается в журнал. Журнал можно посмотреть с помощью запроса GET_CHANGES.

Синтаксис

CREATE TABLE [db_name.]table_name (
  column_name_1 datatype_1 [ NULL | NOT NULL ],
  column_name_2 datatype_2 [ NULL | NOT NULL ],
  column_name_3 datatype_3 [ NULL | NOT NULL ],
  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. Возможные значения см. в разделе Логические типы данных.

column_list_1

Список столбцов, входящих в первичный ключ таблицы.

column_list_2

Список столбцов, входящих в ключ шардирования таблицы. Столбцы должны быть из числа столбцов column_list_1.

datasource_aliases

Список имен датасорсов, в которых нужно разместить данные таблицы.
Элементы списка перечисляются через запятую, каждый из них указывается в одинарных кавычках (например, 'adg'). Варианты, которые остаются доступными, но могут быть удалены в будущем: значения без кавычек (например, adg) или в двойных кавычках (например, "adg").

Ключевое слово PRIMARY KEY

Ключевое слово PRIMARY KEY задает список столбцов, входящих в первичный ключ таблицы.

Ключевое слово DISTRIBUTED BY

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

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

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

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

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

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

Ограничения

Ограничения выполнения

Ограничения имен

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

Ограничения столбцов

  • Первичный ключ должен включать все столбцы ключа шардирования.

Другие ограничения

  • Информационная схема обновляется асинхронно, поэтому созданная таблица может не сразу появиться в информационной схеме.

Примеры

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

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

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

CREATE TABLE marketing.stores (
  id BIGINT 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)

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

CREATE TABLE marketing.clients (
  id BIGINT 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 ('adp','adg')

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

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