Skip to main content
Permite executar consultas SELECT e INSERT em dados armazenados em um servidor MySQL remoto.

Sintaxe

Argumentos

Os argumentos também podem ser passados usando coleções nomeadas. Nesse caso, host e port devem ser especificados separadamente. Essa abordagem é recomendada para ambientes de produção. Cláusulas WHERE simples, como =, !=, >, >=, <, <=, atualmente são executadas no servidor MySQL. O restante das condições e a restrição de amostragem LIMIT são executados no ClickHouse somente após a conclusão da consulta ao MySQL.

Passando uma consulta em vez de um nome de tabela

Em vez de um nome de tabela, o terceiro argumento pode ser uma consulta SELECT passada ao MySQL como está. A estrutura da tabela resultante é inferida a partir do resultado da consulta. A consulta pode ser escrita como uma subconsulta ou encapsulada na função query:
Isso é útil para executar junções, agregações ou qualquer outro processamento no MySQL. Essa tabela é somente leitura: não é permitido fazer INSERT nela. A mesma sintaxe é compatível com o motor de tabela MySQL.
A forma de subconsulta (SELECT ...) é analisada pelo ClickHouse e reserializada no dialeto do MySQL (identificadores entre crases) antes de ser enviada ao servidor. Portanto, ela deve ser um SQL válido do ClickHouse. Para passar sintaxe específica do MySQL que o ClickHouse não analisa, use a forma query('...'), cujo texto é enviado ao MySQL literalmente.Qualquer WHERE, LIMIT, agregação etc. externo da consulta ClickHouse circundante não é enviado para execução na consulta fornecida — ele é aplicado no ClickHouse depois que todo o resultado da consulta é obtido. Para restringir os dados lidos do MySQL, coloque o filtro dentro da consulta fornecida. Com external_table_strict_query = 1, um filtro externo que não pode ser enviado para execução é rejeitado com uma exceção, em vez de ser aplicado localmente.
Compatível com várias réplicas, que devem ser listadas com |. Por exemplo:
ou

Valor retornado

Um objeto de tabela com as mesmas colunas da tabela MySQL original.
Alguns tipos de dados do MySQL podem ser mapeados para diferentes tipos do ClickHouse — isso é controlado pela configuração em nível de consulta mysql_datatypes_support_level
Na consulta INSERT, para distinguir a função de tabela mysql(...) do nome da tabela com uma lista de nomes de colunas, você deve usar as palavras-chave FUNCTION ou TABLE FUNCTION. Veja os exemplos abaixo.

Exemplos

Tabela no MySQL:
Selecionar dados do ClickHouse:
Ou usando coleções nomeadas:

enable_compression

Habilita a compressão para a conexão via protocolo MySQL. Valor padrão: false. Esta configuração se aplica a:
  • a função de tabela mysql;
  • o motor de tabela MySQL;
  • o mecanismo de banco de dados MySQL;
  • coleções nomeadas usadas por integrações com MySQL.
Quando habilitada, o ClickHouse solicita compressão para a conexão. Exemplo:
Substituição e inserção:
Copiando dados da tabela do MySQL para a tabela do ClickHouse:
Ou, se estiver copiando apenas um lote incremental do MySQL com base no ID máximo atual:
Última modificação em 23 de julho de 2026