ODBC
Позволяет ClickHouse подключаться к внешним базам данных с помощью ODBC.
Чтобы использование ODBC было безопасным, ClickHouse использует отдельную программу clickhouse-odbc-bridge. Если драйвер ODBC подгружать непосредственно из clickhouse-server, то проблемы с драйвером могут привести к аварийной остановке сервера ClickHouse. ClickHouse автоматически запускает clickhouse-odbc-bridge по мере необходимости. Программа устанавливается из того же пакета, что и clickhouse-server.
Движок поддерживает тип данных Nullable.
Создание таблицы
Смотрите подробное описание запроса CREATE TABLE.
Структура таблицы может отличаться от структуры исходной таблицы в удалённой СУБД:
- Имена столбцов должны быть такими же, как в исходной таблице, но вы можете использовать только некоторые из этих столбцов и в любом порядке.
- Типы столбцов могут отличаться от типов аналогичных столбцов в исходной таблице. ClickHouse пытается приводить значения к типам данных ClickHouse.
- Настройка external_table_functions_use_nulls определяет как обрабатывать Nullable столбцы. Значение по умолчанию: 1. Если значение 0, то табличная функция не делает Nullable столбцы, а вместо NULL выставляет значения по умолчанию для скалярного типа. Это также применимо для значений NULL внутри массивов.
Параметры движка
connection_settings— название секции с настройками соединения в файлеodbc.ini.external_database— имя базы данных во внешней СУБД.external_table— имя таблицы вexternal_database.
Пример использования
Извлечение данных из локальной установки MySQL через ODBC
Этот пример проверялся в Ubuntu Linux 18.04 для MySQL server 5.7.
Убедитесь, что unixODBC и MySQL Connector установлены.
По умолчанию (если установлен из пакетов) ClickHouse запускается от имени пользователя clickhouse. Таким образом, вам нужно создать и настроить этого пользователя на сервере MySQL.
Теперь настроим соединение в /etc/odbc.ini.
Вы можете проверить соединение с помощью утилиты isql из установки unixODBC.
Таблица в MySQL:
Таблица в ClickHouse, которая получает данные из таблицы MySQL: