SELECT 和 INSERT 查询。
语法
参数
参数也可以通过命名集合传递。在这种情况下,需要分别指定
host 和 port。这种方式推荐在生产环境中使用。
目前,诸如 =, !=, >, >=, <, <= 这样的简单 WHERE 子句会在 MySQL 服务器上执行。
其余条件以及 LIMIT 采样约束,只会在对 MySQL 的查询完成后由 ClickHouse 执行。
传递查询而非表名
SELECT 查询。返回表的结构会根据查询结果自动推断。该查询既可以写成子查询,也可以封装在 query 函数中:
INSERT。MySQL 表引擎也支持相同的语法。
子查询形式
(SELECT ...) 会先由 ClickHouse 解析,再在发送到 server 之前按 MySQL 方言 (使用反引号引用标识符) 重新序列化。因此,它必须是有效的 ClickHouse SQL。若要传递 ClickHouse 无法解析的 MySQL 特定语法,请使用 query('...') 形式,其文本会原样发送给 MySQL。外层 ClickHouse 查询中的任何 WHERE、LIMIT、聚合等都不会下推到传入的查询中,而是在拉取完整查询结果后由 ClickHouse 应用。要限制从 MySQL 读取的数据,请将过滤条件放在传入的查询内部。启用 external_table_strict_query = 1 时,无法下推的外层过滤器会直接抛出异常,而不是在本地应用。| 分隔列出。例如:
返回值
MySQL 的某些数据类型可映射为不同的 ClickHouse 类型——可通过查询级设置 mysql_datatypes_support_level 来处理这一点。
在
INSERT 查询中,为了将表函数 mysql(...) 与带列名列表的表名区分开来,必须使用关键字 FUNCTION 或 TABLE FUNCTION。请参见下面的示例。示例
enable_compression
false。
此设置适用于:
mysql表函数;MySQL表引擎;MySQL数据库引擎;- 用于 MySQL 集成的命名集合。