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