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: