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

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:

Смотрите также