本文主要是介绍如何在 Doris 中通过外表访问 OceanBase 表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在OceanBase 中建立了一张表 test.t1:
CREATE TABLE `t1` (`apply_id` varchar(500) DEFAULT NULL,`apply_dt` date DEFAULT NULL,`mobile_prov_nm` varchar(500) DEFAULT NULL,`mobile_city_nm` varchar(500) DEFAULT NULL
);-- 插入 10000 行数据到 t1 表insert /*+parallel(48) enable_parallel_dml append */ into t1select abs(random()),case abs(random()%3)when 0 then '2022-10-10'when 1 then '2021-10-10' when 2 then '2023-10-10'end,abs(random()%10000),10000000 * abs(random()%25)
from table(generator(10000));
我的 OceanBase 的账号信息如下:
host: 127.0.0.1
port: 44035
database: test
user: root@mysql_tenant
pass: 空
然后在 Doris 中通过外表 et1 可以访问 OceanBase 中的 t1 表。Doris 中建外表的流程如下:
drop resource jdbc_resource;
drop table et1;CREATE EXTERNAL RESOURCE jdbc_resource
properties ("type"="jdbc","user"="root@mysql_tenant","password"="","jdbc_url"="jdbc:oceanbase://127.0.0.1:44035/test","driver_url"="file:///home/admin/ob.z1.obs0/oceanbase-client-2.4.1.jar","driver_class"="com.oceanbase.jdbc.Driver"
);CREATE TABLE `et1` (`apply_id` varchar(500) DEFAULT NULL,`apply_dt` date DEFAULT NULL,`mobile_prov_nm` varchar(500) DEFAULT NULL,`mobile_city_nm` varchar(500) DEFAULT NULL
)ENGINE=JDBC
PROPERTIES (
"resource" = "jdbc_resource", -- 在Doris中建立外表时依赖的资源名
"table" = "t1", -- 在Doris中建立外表时,与外部数据库相映射的表名。
"table_type"="oceanbase" -- 外表对应的数据库 mysql,postgresql,sqlserver,oracle, 和 jdbc_url 中的数据库名保持一致
);-- 测试访问外表
select * from et1;
其中,
driver_url
中的 jar 文件oceanbase-client-2.4.1.jar
文件来自 OceanBase 官网:资源与服务-》软件下载-》企业版-》[驱动和中间件](https://www.oceanbase.com/softwarecenter-enterprise)
jdbc_url
中 的 url 前缀是jdbc:oceanbase
,不是jdbc:mysql
driver_class
是com.oceanbase.jdbc.Driver
,而不是com.mysql.jdbc.Driver
- 创建外表的属性中,
"table_type"="oceanbase"
不要写成"table_type"="mysql"
总之,所有 mysql
的痕迹,都变成 oceanbase
,就对了。其余和 MySQL jdbc 一模一样。
这篇关于如何在 Doris 中通过外表访问 OceanBase 表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!