Импорт данных из СУБД (из standalone-таблицы)
Содержание раздела
Система позволяет импортировать данные таблиц СУБД (standalone-таблиц) в следующие логические сущности системы:
Предварительный шаг перед импортом
Импорт данных из standalone-таблицы выполняется с помощью внешней readable-таблицы. Если она отсутствует, ее необходимо создать.
Чтобы создать внешнюю readable-таблицу, выполните запрос CREATE READABLE EXTERNAL TABLE без ключевого слова OPTIONS.
Как импортировать данные из standalone-таблицы в систему
Чтобы импортировать данные из standalone-таблицы в логическую или прокси-таблицу:
- Если целевая логическая таблица или прокси-таблица отсутствует, создайте ее.
- Если необходимо включить изменения данных логической таблицы в дельту и в логической БД нет открытой дельты, откройте новую дельту.
- Выполните запрос INSERT SELECT, где в качестве источника укажите внешнюю readable-таблицу, а в качестве приемника — логическую таблицу или прокси-таблицу:
- чтобы выполнить запрос в синхронном режиме, используйте любой из способов:
- чтобы выполнить запрос в асинхронном режиме, отправьте его по HTTP с помощью POST-метода query с параметром async, имеющим значение
true.
- Если изменения были выполнены в дельте и они должны быть последними в дельте, закройте дельту.
При вставке данных в учитывайте ограничения таблиц целевой СУБД.
Пример
Импорт данных из standalone-таблицы в логическую таблицу:
-- создание внешней readable-таблицы, с помощью которой будут выбираться данные standalone-таблицы
CREATE READABLE EXTERNAL TABLE marketing.agreements_ext_read_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');
-- выбор логической базы данных marketing в качестве базы данных по умолчанию
USE marketing;
-- создание логической таблицы agreements_adp с размещением данных в датасорсе adp
CREATE TABLE agreements_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)
DATASOURCE_TYPE ('adp');
-- открытие новой дельты
BEGIN DELTA;
-- вставка данных в логическую таблицу agreements_adp из standalone-таблицы,
-- на которую указывает внешняя readable-таблица agreements_ext_read_adp
INSERT INTO agreements_adp SELECT * FROM agreements_ext_read_adp;
-- закрытие дельты
COMMIT DELTA;