SELECT и INSERT к данным, хранящимся на удаленном сервере MySQL.
Синтаксис
Аргументы
Аргументы также можно передавать с помощью именованных коллекций. В этом случае
host и port нужно указывать отдельно. Такой подход рекомендуется для продакшн-среды.
Простые секции WHERE, такие как =, !=, >, >=, <, <=, в настоящее время выполняются на сервере MySQL.
Остальные условия и ограничение выборки LIMIT выполняются в ClickHouse только после завершения запроса к MySQL.
Передача запроса вместо имени таблицы
SELECT, который передаётся в MySQL как есть. Структура результирующей таблицы определяется по результату запроса. Запрос можно записать либо как подзапрос, либо обернуть в функцию query:
INSERT в неё не поддерживается. Тот же синтаксис поддерживает движок таблицы MySQL.
Форма подзапроса
(SELECT ...) разбирается ClickHouse и перед отправкой на сервер повторно сериализуется в диалекте MySQL (с экранированием идентификаторов обратными кавычками). Поэтому она должна быть корректным ClickHouse SQL. Чтобы передать синтаксис, специфичный для MySQL, который ClickHouse не разбирает, используйте форму query('...'), текст которой отправляется в MySQL без изменений.Любой внешний WHERE, LIMIT, агрегация и т. д. из окружающего запроса к ClickHouse не проталкиваются в переданный запрос — они применяются в ClickHouse после получения полного результата запроса. Чтобы ограничить объём данных, считываемых из MySQL, поместите фильтр внутрь передаваемого запроса. При external_table_strict_query = 1 внешний фильтр, который нельзя протолкнуть, вызывает исключение вместо локального применения.|. Например:
Возвращаемое значение
Некоторые типы данных MySQL могут сопоставляться с разными типами ClickHouse — это регулируется настройкой уровня запроса mysql_datatypes_support_level
В запросе
INSERT, чтобы отличить табличную функцию mysql(...) от имени таблицы со списком имён столбцов, необходимо использовать ключевые слова FUNCTION или TABLE FUNCTION. См. примеры ниже.Примеры
enable_compression
false.
Этот параметр применяется к:
- табличной функции
mysql; - движку таблицы
MySQL; - движку базы данных
MySQL; - именованным коллекциям, используемым в интеграциях MySQL.