CREATE TABLE
Содержание раздела
Запрос позволяет создать логическую таблицу в логической базе данных.
В ответе возвращается:
- пустой объект 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