CREATE WRITABLE EXTERNAL TABLE
Содержание раздела
Поддерживается в версиях: 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.
Запрос позволяет создать внешнюю writable-таблицу.
По умолчанию система создает внешнюю таблицу в логической базе данных и не создает связанную с ней standalone-таблицу в датасорсе. Это может быть полезно, если standalone-таблица уже существует в датасорсе. Чтобы standalone-таблица автоматически создалась при создании внешней таблицы, укажите в запросе ключевое слово OPTIONS
со значением auto.create.table.enable=true
.
Наличие внешней таблицы можно проверить, как описано в разделе Проверка наличия логической сущности.
Изменение внешней таблицы недоступно. Чтобы заменить таблицу, удалите ее и создайте новую.
Синтаксис
CREATE WRITABLE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]ext_table_name (
column_name data_type [NULL | NOT NULL],
[ ... ,]
[PRIMARY KEY (column_name[, ... ])]
)
[DISTRIBUTED BY (column_name[, ... ])]
LOCATION 'core:datasource_name://path_to_table'
[OPTIONS ('option=value[; ... ]')]
Параметры:
db_name
-
Имя логической базы данных, в которой создается внешняя таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.
ext_table_name
-
Имя создаваемой внешней таблицы. Должно быть уникально среди всех логических сущностей логической базы данных, а также должно удовлетворять другим условиям, перечисленным в секции Ограничения.
Чтобы быстро различать разные типы внешних таблиц между собой, рекомендуется давать им имена, указывающие на тип таблицы, например
agreements_ext_write
илиagreements_ext_write_adp
. Типы writable- и readable-таблиц можно проверить в системном представлении tables. column_name
-
Имя столбца таблицы. Должно удовлетворять условиям, перечисленным в секции Ограничения.
data_type
-
Тип данных столбца
column_name
. Возможные значения см. в разделе Логические типы данных.
Ключевое слово IF NOT EXISTS
Включает проверку наличия внешней таблицы до попытки создания. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном создании внешней таблицы, иначе — только при успешном создании внешней таблицы.
Ключевое слово PRIMARY KEY (column_name[, ... ])
Задает список столбцов, входящих в первичный ключ таблицы.
Ключевое слово опционально, если связанная standalone-таблица уже существует или будет расположена в датасорсе типа ADB или ADP.
Ключевое слово DISTRIBUTED BY (column_name[, ... ])
Задает список столбцов, входящих в ключ шардирования таблицы.
Ключевое слово опционально, если связанная standalone-таблица уже существует или будет расположена в датасорсе типа ADB или ADP.
Ключевое слово LOCATION 'core:datasource_name://path_to_table'
Задает путь к standalone-таблице, где:
datasource_name
— имя датасорса, в котором размещена или будет размещена standalone-таблица, связанная с внешней таблицей. Имя должно быть указано в соответствии с конфигурацией;path_to_table
— путь к standalone-таблице, состоящий из имени схемы (если применимо для СУБД) и имени таблицы.
Примеры пути к таблицеagreements
в разных СУБД:- ADQM:
dtm__marketing.agreements
, - ADP, ADB:
marketing.agreements
, - ADG:
dtm__marketing__agreements
.
- ADQM:
Ключевое слово OPTIONS ('option=value[; ... ]')
Задает список дополнительных параметров (option
) и их значений (value
) из следующих:
auto.create.table.enable
— признак автоматического создания standalone-таблицы при создании внешней readable-таблицы. Возможные значения:false
(по умолчанию) — не создавать standalone-таблицу,true
— создать standalone-таблицу.
Варианты ответа
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Ограничения
- Имена таблицы и ее столбцов должны соответствовать требованиям, описанным в разделе Соглашения об именах.
- Имена и порядок столбцов должны совпадать во внешней таблице и связанной standalone-таблице.
- Информационная схема обновляется асинхронно, поэтому созданная таблица может не сразу появиться в информационной схеме.
Примеры
Создание таблицы с ключами и параметрами
CREATE WRITABLE EXTERNAL TABLE marketing.agreements_ext_write_adp (
id BIGINT NOT NULL,
client_id BIGINT NOT NULL,
number VARCHAR NOT NULL,
signature_date DATE,
effective_date DATE,
closing_date DATE,
description VARCHAR,
PRIMARY KEY(id)
)
DISTRIBUTED BY (id)
LOCATION 'core:adp://marketing.agreements'
OPTIONS ('auto.create.table.enable=true')
Создание таблицы без ключей и параметров
CREATE WRITABLE EXTERNAL TABLE marketing.payments_ext_write_adqm (
id BIGINT NOT NULL,
agreement_id BIGINT,
code VARCHAR(16),
amount DOUBLE,
currency_code VARCHAR(3),
description VARCHAR
)
LOCATION 'core:adqm://dtm__marketing.payments'