Перейти к основному содержимому
Перейти к основному содержимому

Вставка и дамп 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 - переносимый, полнофункциональный инструмент для работы с локальными/удаленными файлами без необходимости серверa ClickHouse.