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。