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
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:
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.|. Por exemplo:
Valor retornado
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
enable_compression
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.