Вставка и выгрузка SQL данных в ClickHouse
ClickHouse можно легко интегрировать в инфраструктуру баз данных OLTP различными способами. Один из способов — это передача данных между другими базами данных и ClickHouse с использованием SQL дампов.
Создание SQL дампов
Данные можно выгрузить в SQL формате с использованием SQLInsert. ClickHouse будет записывать данные в форме INSERT INTO <имя таблицы> VALUES(...
и использовать опцию настройки output_format_sql_insert_table_name
в качестве имени таблицы:
Имена колонок можно пропустить, отключив опцию output_format_sql_insert_include_column_names
:
Теперь мы можем передать файл dump.sql в другую OLTP базу данных:
Предполагаем, что таблица some_table
существует в базе данных MySQL some_db
.
Некоторые СУБД могут иметь ограничения на количество значений, которые могут быть обработаны в одном пакете. По умолчанию ClickHouse создаёт пакеты из 65k значений, но это можно изменить с помощью опции output_format_sql_insert_max_batch_size
:
Экспорт набора значений
ClickHouse имеет формат Values, который похож на SQLInsert, но опускает часть INSERT INTO table VALUES
и возвращает только набор значений:
Вставка данных из SQL дампов
Для чтения SQL дампов используется MySQLDump:
По умолчанию ClickHouse будет пропускать неизвестные колонки (под контролем опции input_format_skip_unknown_fields) и обрабатывать данные для первой найденной таблицы в дампе (если в один файл было выгружено несколько таблиц). DDL операторы будут пропущены. Чтобы загрузить данные из MySQL дампа в таблицу (файл mysql.sql):
Мы также можем автоматически создать таблицу из файла MySQL дампа:
Здесь мы создали таблицу с именем table_from_mysql
на основе структуры, которую ClickHouse автоматически вывел. ClickHouse либо обнаруживает типы на основе данных, либо использует DDL, если он доступен:
Другие форматы
ClickHouse предлагает поддержку многих форматов, как текстовых, так и бинарных, для охвата различных сценариев и платформ. Изучите больше форматов и способы работы с ними в следующих статьях:
И также проверьте clickhouse-local - портативный многофункциональный инструмент для работы с локальными/удалёнными файлами без необходимости в сервере ClickHouse.