Bytehouse 云数仓版支持接入 MySQL Catalog,您无需手动创建外部数据库、表,可通过 MySQL Catalog 查询其中的数据。本文将介绍如何创建和使用 MySQL Catalog。
请提前获取以下 MySQL 连接信息,您可参考您使用的 MySQL 服务的官方文档获取:
CREATE EXTERNAL CATALOG [IF NOT EXISTS] {catalog_name} PROPERTIES type='mysql', address='ip:port', username='<user>', password='<password>';
参数 | 配置说明 |
|---|---|
创建 Catalog 描述 |
|
配置参数 |
|
查看您创建的所有 Catalog。
SHOW EXTERNAL CATALOGS;
查看指定 Catalog 的 Schema 信息。
SHOW CREATE EXTERNAL CATALOG your_catalog_name;
假设您已经创建了一个名为 mysql_catalog 的外部 Catalog,您可通过以下命令查询该 Catalog 中的数据。
您可以通过 catalog_name.db_name.table_name 这种三段式命名方式直接访问 MySQL Catalog 中的表,例如:
SELECT * FROM mysql_catalog.mysql_db_name.mysql_table_name;
您也可以使用该方式访问 ByteHouse 云数仓版原生的 CnchMergeTree 表。其中,cnch(cloud-native-clickhouse 的缩写)为 ByteHouse 云数仓版默认 Catalog 的名字。
SELECT * FROM cnch.cnch_db_name.cnch_table_name; -- 等同于 SELECT * FROM cnch_db_name.cnch_table_name;
利用外部 Catalog,您可以直接将 MySQL 外表和 ByteHouse 的 CnchMergeTree 表实现 join 查询。
SELECT * FROM mysql_catalog.mysql_db.mysql_table UNION ALL SELECT (1) FROM cnch.cnch_db.cnch_table;
列出 Catalog 中的数据库名。
SHOW DATABASES FROM catalog_name;
列出数据库中的表名。
SHOW TABLES FROM catalog_name.database_name;
获取表的创建语句。
SHOW CREATE TABLE catalog_name.database_name.table_name;
您可以使用如下 SQL 来切换查询的 Catalog:
SWITCH CATALOG catalog_name;
此时再运行查询语句,ByteHouse 会从 MySQL Catalog 下的指定的数据库、表中读取数据。
SELECT * FROM mysql_db.mysql_table;
如果需切换回 ByteHouse 默认的 Catalog,您可以使用以下任意一条命令:
# 方式 1 SWITCH CATALOG default; # 方式 2 SWITCH CATALOG cnch;
您也可以使用以下命令,直接将默认的数据库切换到 MySQL Catalog 下的指定数据库:
USE mysql_catalog.mysql_db;
如需切换回 ByteHouse 内表,可使用以下命令:
USE cnch.cnch_database_name;
您可通过 currentCatalog() 函数查询当前 Catalog。
SELECT currentCatalog();
当您不再需要通过该 Catalog 访问 MySQL 数据时,可执行此命令删除 Catalog 以清理资源。
DROP EXTERNAL CATALOG [IF EXISTS] catalog_name;
ByteHouse 云数仓版也支持通过 ByteHouse 云数仓版控制台创建和使用 MySQL Catalog,详情请参见管理外部 Catalog。
除了通过 MySQL Catalog 访问 MySQL 数据外,ByteHouse 也支持通过外表方式查询 MySQL 数据,详情请参考 MySQL 外表。