Пример интеграции¶
Без использования расширения¶
- Создать таблицу для тестовых данных:
create table test (
id int,
text1 text,
text2 text,
) with (appendonly=true, orientation=column, compresstype=zstd, compresslevel=1)
distributed by (id);
- Сгенерировать тестовые данные:
insert into test select gen, 'Some text #' || gen::text, 'Some another text #' || gen::text from generate_series(1, 1000000) gen;
- Создать внешнюю таблицу:
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';
- Создать аналогичную таблицу в 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
- Загрузить данные:
INSERT INTO test_ext SELECT * FROM test;
С использованием расширения¶
Используя таблицы test в ADB и tkhemali_test_ext в Clickhouse, созданные ранее, загрузить данные через безопасные процедуры расширения можно следующим образом:
- Создать внешнюю таблицу, которая указывает на промежуточный слой в 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';
- Загрузить данные, используя процедуру расширения txn:
select txn('INSERT INTO test_ext2 SELECT * FROM test;');