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