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

Вставка и выгрузка 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 существует в базе данных some_db MySQL.

Некоторые СУБД могут иметь ограничения на количество значений, которые могут быть обработаны за один раз. По умолчанию 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.