DLA支持通过CU版访问用户自建的OceanBase,通过标准SQL语句查询OceanBase中的数据或者直接向OceanBase写入数据。本文介绍如何通过DLA读写OceanBase上的数据。
前提条件
- 目前仅支持通过CU版访问OceanBase,请确保您已开通CU版,开通方式,请参见DLA Presto CU版本快速入门。
- 虚拟集群绑定的数据源网络必须和OceanBase集群在同一个VPC下面。
准备工作
在通过DLA读写OceanBase数据前,您需要在OceanBase中创建测试表。
以下为创建OceanBase表的示例:
create table person (
id bigint,
name varchar(64),
age int);
操作步骤
- 连接DLA
- 创建库
CREATE DATABASE `oceanbase_test` WITH DBPROPERTIES ( catalog = 'oceanbase', location = 'jdbc:oceanbase://oceanbaseIp:oceanbasePort/testDatabaseName', user = 'userName', password = 'password', vpc_id = 'vpcId', instance_id = 'instanceId' );
参数说明如下:- CATALOG:取值为oceanbase,表示创建的是Oceanbase Schema。
- LOCATION:填写oceanBase的地址,以及对应oceanBase中的database名。
- USER:OceanBase数据库的用户名。
- PASSWORD:OceanBase数据库的密码。
- VPC_ID:OceanBase所在的网络vpcId。
- INSTANCE_ID:部署OceanBase的instanceId。
- 创建表
CREATE EXTERNAL TABLE oceanbase_test.person ( id int, name varchar, age int);
注意 表名、字段的顺序和类型要和OceanBase中对应的表保持一致。 - 访问数据由于只有CU的计算资源和OceanBase网络可以联通,因此所有访问OceanBase表的SQL语句都需要指定
hint: /*+cluster=your-vc-name*/
,这样SQL就会在CU中执行。例如:mysql> /*+ cluster=vc-test */ insert into oceanbase_test.person values (1, 'james', 10); +------+ | rows | +------+ | 1 | +------+ 1 row in set (0.46 sec) mysql> /*+ cluster=vc-test */ select id, name, age from oceanbase_test.person; +------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | +------+-------+------+ 1 row in set (0.43 sec)
更多SQL信息,请参见常用SQL。