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