Пример интеграции

Без использования расширения

  1. Создать таблицу для тестовых данных:
create table test (
id int,
text1 text,
text2 text,
) with (appendonly=true, orientation=column, compresstype=zstd, compresslevel=1)
distributed by (id);
  1. Сгенерировать тестовые данные:
insert into test select gen, 'Some text #' || gen::text, 'Some another text #' || gen::text from generate_series(1, 1000000) gen;
  1. Создать внешнюю таблицу:
create writable external table test_ext (
        like table
 )
LOCATION ('pxf://tkemali_test_ext? PROFILE=TKH&URL=sdch1:8123,sdch2:8123&send_threads=4&send_delay=100&send_queue_sizeMultiplier=3.0&req_length_max=5000')
FORMAT 'TEXT’
ENCODING 'UTF8';
  1. Создать аналогичную таблицу в Clickhouse (шаг выполняется на стороне Clickhouse):
CREATE TABLE default.tkhemali_test_ext (`id` Int32, `text1` String, `text2` String) ENGINE = MergeTree PARTITION BY tuple() ORDER BY id SETTINGS index_granularity = 8192
  1. Загрузить данные:
INSERT INTO test_ext SELECT * FROM test;

С использованием расширения

Используя таблицы test в ADB и tkhemali_test_ext в Clickhouse, созданные ранее, загрузить данные через безопасные процедуры расширения можно следующим образом:

  1. Создать внешнюю таблицу, которая указывает на промежуточный слой в Clickhouse:
create writable external table test_ext2 (
        like table
 )
LOCATION ('pxf://tkemali_test_ext_tmp_$?PROFILE=TKH&URL=sdch1:8123,sdch2:8123&send_threads=4&send_delay=100&send_queue_sizeMultiplier=3.0&req_length_max=5000')
FORMAT 'TEXT’
ENCODING 'UTF8';
  1. Загрузить данные, используя процедуру расширения txn:
select txn('INSERT INTO test_ext2 SELECT * FROM test;');