mysql 表函数
允许对存储在远程 MySQL 服务器上的数据执行 SELECT
和 INSERT
查询。
语法
参数
参数 | 描述 |
---|---|
host:port | MySQL 服务器地址。 |
database | 远程数据库名称。 |
table | 远程表名称。 |
user | MySQL 用户。 |
password | 用户密码。 |
replace_query | 将 INSERT INTO 查询转换为 REPLACE INTO 的标志。可能的值:- 0 - 查询作为 INSERT INTO 执行。- 1 - 查询作为 REPLACE INTO 执行。 |
on_duplicate_clause | 添加到 INSERT 查询中的 ON DUPLICATE KEY on_duplicate_clause 表达式。仅在 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 KEY 子句一起使用的 on_duplicate_clause 。 |
参数也可以通过 命名集合 传递。在这种情况下,host
和 port
应该单独指定。这种方法推荐用于生产环境。
简单的 WHERE
子句,如 =, !=, >, >=, <, <=
当前在 MySQL 服务器上执行。
其余的条件和 LIMIT
采样约束在查询到 MySQL 完成后仅在 ClickHouse 中执行。
支持多个副本,必须通过 |
列出。例如:
或
返回值
一个具有与原 MySQL 表相同列的表对象。
备注
某些 MySQL 数据类型可以映射到不同的 ClickHouse 类型 - 这可以通过查询级设置 mysql_datatypes_support_level 解决。
备注
在 INSERT
查询中,为了区分表函数 mysql(...)
和带有列名列表的表名称,您必须使用关键词 FUNCTION
或 TABLE FUNCTION
。请参见下面的示例。
示例
MySQL 中的表:
从 ClickHouse 选择数据:
或使用 命名集合:
替换和插入:
将数据从 MySQL 表复制到 ClickHouse 表:
或仅基于当前最大 id 从 MySQL 复制增量批次: