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:
Смотрите также