Импорт данных из СУБД (из standalone-таблицы)

Содержание раздела
  1. Предварительный шаг перед импортом
  2. Как импортировать данные из standalone-таблицы в систему
  3. Пример

Система позволяет импортировать данные таблиц СУБД (standalone-таблиц) в следующие логические сущности системы:

Предварительный шаг перед импортом

Импорт данных из standalone-таблицы выполняется с помощью внешней readable-таблицы. Если она отсутствует, ее необходимо создать.

Чтобы создать внешнюю readable-таблицу, выполните запрос CREATE READABLE EXTERNAL TABLE без ключевого слова OPTIONS.

Как импортировать данные из standalone-таблицы в систему

Чтобы импортировать данные из standalone-таблицы в логическую или прокси-таблицу:

  1. Если целевая логическая таблица или прокси-таблица отсутствует, создайте ее.
  2. Если необходимо включить изменения данных логической таблицы в дельту и в логической БД нет открытой дельты, откройте новую дельту.
  3. Выполните запрос INSERT SELECT, где в качестве источника укажите внешнюю readable-таблицу, а в качестве приемника — логическую таблицу или прокси-таблицу:
    • чтобы выполнить запрос в синхронном режиме, используйте любой из способов:
      • отправьте запрос по JDBC,
      • отправьте запрос по HTTP с помощью POST-метода query без параметра async или с параметром async, имеющим значение false;
    • чтобы выполнить запрос в асинхронном режиме, отправьте его по HTTP с помощью POST-метода query с параметром async, имеющим значение true.
  4. Если изменения были выполнены в дельте и они должны быть последними в дельте, закройте дельту.

При вставке данных в учитывайте ограничения таблиц целевой СУБД.

Пример

Импорт данных из 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;