mysql Табличная Функция
Позволяет выполнять SELECT
и INSERT
запросы на данные, которые хранятся на удаленном сервере MySQL.
Синтаксис
Параметры
host:port
— Адрес сервера MySQL.database
— Имя удаленной базы данных.table
— Имя удаленной таблицы.user
— Пользователь MySQL.password
— Пароль пользователя.replace_query
— Флаг, который преобразует запросыINSERT INTO
вREPLACE INTO
. Возможные значения:0
- Запрос выполняется какINSERT INTO
.1
- Запрос выполняется какREPLACE INTO
.
on_duplicate_clause
— ВыражениеON DUPLICATE KEY on_duplicate_clause
, которое добавляется к запросуINSERT
. Может быть указано только сreplace_query = 0
(если одновременно переданreplace_query = 1
иon_duplicate_clause
, ClickHouse генерирует исключение). Пример:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1;
Здесьon_duplicate_clause
— этоUPDATE c2 = c2 + 1
. См. документацию MySQL, чтобы узнать, какиеon_duplicate_clause
можно использовать сON DUPLICATE KEY
.
Аргументы также могут быть переданы с использованием именованных коллекций. В этом случае host
и port
должны быть указаны отдельно. Этот подход рекомендуется для производственной среды.
Простые условия WHERE
, такие как =, !=, >, >=, <, <=
в данный момент выполняются на сервере MySQL.
Остальные условия и ограничение выборки LIMIT
выполняются в ClickHouse только после завершения запроса к MySQL.
Поддерживает несколько реплик, которые должны быть перечислены через |
. Например:
или
Возвращаемое значение
Объект таблицы с такими же колонками, как и у оригинальной таблицы MySQL.
Некоторые типы данных MySQL могут быть сопоставлены с различными типами ClickHouse - это регулируется настройкой уровня поддержки типов данных на уровне запросов mysql_datatypes_support_level.
В запросе INSERT
, чтобы отличить табличную функцию mysql(...)
от имени таблицы с перечислением имен колонок, необходимо использовать ключевые слова FUNCTION
или TABLE FUNCTION
. См. примеры ниже.
Примеры
Таблица в MySQL:
Выбор данных из ClickHouse:
Или с использованием именованных коллекций:
Замена и вставка:
Копирование данных из таблицы MySQL в таблицу ClickHouse:
Или если копирование только инкрементальной партии из MySQL на основе максимального текущего id:
Смотрите также