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
采样约束仅在查询完成后在 ClickHouse 中执行。
支持多个副本,必须用 |
列出。例如:
或
返回值
一个与原 MySQL 表具有相同列的表对象。
备注
某些 MySQL 数据类型可以映射到不同的 ClickHouse 类型 - 这通过查询级别设置 mysql_datatypes_support_level 来解决。
备注
在 INSERT
查询中,为了区分表函数 mysql(...)
和包含列名列表的表名,必须使用关键字 FUNCTION
或 TABLE FUNCTION
。请参见下面的示例。
示例
MySQL 中的表:
从 ClickHouse 中选择数据:
或使用 命名集合:
替换和插入:
从 MySQL 表复制数据到 ClickHouse 表:
或者如果基于当前最大 id 仅复制 MySQL 的增量批次:
另请参阅