mysql Table Function
Allows SELECT and INSERT queries to be performed on data that are stored on a remote MySQL server.
Syntax
Parameters
host:port— MySQL server address.database— Remote database name.table— Remote table name.user— MySQL user.password— User password.replace_query— Flag that convertsINSERT INTOqueries toREPLACE INTO. Possible values:0- The query is executed asINSERT INTO.1- The query is executed asREPLACE INTO.
on_duplicate_clause— TheON DUPLICATE KEY on_duplicate_clauseexpression that is added to theINSERTquery. Can be specified only withreplace_query = 0(if you simultaneously passreplace_query = 1andon_duplicate_clause, ClickHouse generates an exception). Example:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1;on_duplicate_clausehere isUPDATE c2 = c2 + 1. See the MySQL documentation to find whichon_duplicate_clauseyou can use with theON DUPLICATE KEYclause.
Arguments also can be passed using named collections. In this case host and port should be specified separately. This approach is recommended for production environment.
Simple WHERE clauses such as =, !=, >, >=, <, <= are currently executed on the MySQL server.
The rest of the conditions and the LIMIT sampling constraint are executed in ClickHouse only after the query to MySQL finishes.
Supports multiple replicas that must be listed by |. For example:
or
Returned Value
A table object with the same columns as the original MySQL table.
Some data types of MySQL can be mapped to different ClickHouse types - this is addressed by query-level setting mysql_datatypes_support_level
In the INSERT query to distinguish table function mysql(...) from table name with column names list, you must use keywords FUNCTION or TABLE FUNCTION. See examples below.
Examples
Table in MySQL:
Selecting data from ClickHouse:
Or using named collections:
Replacing and inserting:
Copying data from MySQL table into ClickHouse table:
Or if copying only an incremental batch from MySQL based on the max current id:
See Also