如何在 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 t1
   select 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_classcom.oceanbase.jdbc.Driver,而不是 com.mysql.jdbc.Driver
  • 创建外表的属性中,"table_type"="oceanbase" 不要写成 "table_type"="mysql"

总之,所有 mysql 的痕迹,都变成 oceanbase,就对了。其余和 MySQL jdbc 一模一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值