Перейти к основному содержимому
Перейти к основному содержимому

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:

См. также