Вставка и дамп 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 вводит поддержку множества форматов, как текстовых, так и бинарных, чтобы охватить различные сценарии и платформы. Исследуйте больше форматов и способы работы с ними в следующих статьях:
- CSV и TSV форматы
- Parquet
- JSON форматы
- Регулярные выражения и шаблоны
- Нативные и бинарные форматы
- SQL форматы
Также проверьте clickhouse-local - переносимый, полнофункциональный инструмент для работы с локальными/удаленными файлами без необходимости серверa ClickHouse.