• 沒有找到結果。

1.18.1 创建 DLI 表关联 RDS

功能描述

使用CREATE TABLE命令创建DLI表并关联RDS上已有的表。该功能支持访问RDS的 MySQL集群和PostGre集群。

前提条件

创建DLI表关联RDS之前需要创建跨源连接。管理控制台操作请参考经典型跨源连接和

增强型跨源连接。

语法格式

CREATE TABLE [IF NOT EXISTS] TABLE_NAME USING JDBC OPTIONS (

'url'='xx',

'driver'='DRIVER_NAME',

'dbtable'='db_name_in_RDS.table_name_in_RDS', 'passwdauth' = 'xxx',

'encryption' = 'true');

关键字

1-49 CREATE TABLE 参数描述

参数 描述

url RDS的连接地址,需要先创建跨源连接,管理控制台操作请参考经典

型跨源连接和增强型跨源连接。

创建经典型跨源连接后,使用经典型跨源连接中返回的连接地址。

创建增强型跨源连接后,使用RDS提供的"内网域名"或者内网地址和数 据库端口访问,MySQL格式为"协议头://内网IP:内网端口",PostGre格 式为"协议头://内网IP:内网端口/数据库名"。

例如:"jdbc:mysql://192.168.0.193:3306"或者"jdbc:postgresql://

192.168.0.193:3306/postgres"。

说明经典型跨源的连接地址默认格式为:"协议头://访问地址:访问端口"

例如:jdbc:mysql://to-rds-1174405119-oLRHAGE7.datasource.com:3306 如果想要访问RDS的postgre集群,需要将连接地址中的协议头修改为

"jdbc:postgresql",并在连接地址最后加上"/数据库名"。

例如:jdbc:postgresql://to-rds-1174405119-oLRHAGE7.datasource.com:

3306/postgreDB

driver jdbc驱动类名,访问MySQL集群请填写:"com.mysql.jdbc.Driver",

访问PostGre集群请填写:"org.postgresql.Driver"。

dbtable ● 访问MySQL集群填写"数据库名.表名"

注意连接的RDS数据库名不能包含中划线-或^特殊字符,否则会创建表失败。

● 访问PostGre集群填写"模式名.表名"

说明模式名即为数据库模式(schema)的名称。数据库中schema是数据库对象

集合,包含了表,视图等多种对象。

user (已废弃)RDS用户名。

password (已废弃)RDS用户名密码。

passwdaut

h 跨源密码认证名称。跨源认证信息创建方式请参考《数据湖探索用户 指南》>《跨源认证》。

参数 描述

encryption 使用跨源密码认证时配置为“true”。

partitionC

olumn 读取数据时,用于设置并发使用的数值型字段。

说明

● “partitionColumn”、“lowerBound”、“upperBound”、

“numPartitions”四个参数必须同时设置,不支持仅设置其中某一个或某 几个。

● 为了提升并发读取的性能,建议使用自增列。

lowerBoun

d partitionColumn设置的字段数据最小值,该值包含在返回结果中。

upperBou

nd partitionColumn设置的字段数据最大值,该值不包含在返回结果中。

numPartiti

ons 读取数据时并发数。

说明实际读取数据时,会根据“lowerBound”与“upperBound”,平均分配给每 个task,获取其中一部分的数据。例如:

'partitionColumn'='id', 'lowerBound'='0', 'upperBound'='100', 'numPartitions'='2'

表示在DLI中会起2个并发task,一个task执行id>=0 and id < 50,另一个task执 行id >=50 and id < 100。

fetchsize 读取数据时,每一批次获取数据的记录数,默认值1000。设置越大性 能越好,但占用内存越多,该值设置过大会有内存溢出的风险。

batchsize 写入数据时,每一批次写入数据的记录数,默认值1000。设置越大性 能越好,但占用内存越多,该值设置过大会有内存溢出的风险。

truncate 执行overwrite时是否不删除原表,直接执行清空表操作,取值范围:

● true

● false

默认为“false”,即在执行overwrite操作时,先将原表删除再重新建 表。

isolationLe

vel 事务隔离级别,取值范围:

● NONE

● READ_UNCOMMITTED

● READ_COMMITTED

● REPEATABLE_READ

● SERIALIZABLE

默认值为“READ_UNCOMMITTED”。

注意事项

创建RDS关联表时,不需要指定关联表的Schema。DLI会自动获取RDS中对应参数

"dbtable"中的表的Schema。

示例

访问MySQL

CREATE TABLE IF NOT EXISTS dli_to_rds USING JDBC OPTIONS (

'url'='jdbc:mysql://to-rds-117405104-3eAHxnlz.datasource.com:3306', 'driver'='com.mysql.jdbc.Driver',

'dbtable'='rds_test.test1', 'passwdauth' = 'xxx', 'encryption' = 'true');

访问PostGre

CREATE TABLE IF NOT EXISTS dli_to_rds USING JDBC OPTIONS (

'url'='jdbc:postgresql://to-rds-1174405119-oLRHAGE7.datasource.com:3306/postgreDB', 'driver'='org.postgresql.Driver',

'dbtable'='pg_schema.test1', 'passwdauth' = 'xxx', 'encryption' = 'true');

1.18.2 插入数据至 RDS 表

功能描述

INSERT INTO命令将DLI表中的数据插入到已关联的指定RDS表中。

语法格式

● 将SELECT查询结果插入到表中:

INSERT INTO DLI_TABLE SELECT field1,field2...

[FROM DLI_TEST]

[WHERE where_condition]

[LIMIT num]

[GROUP BY field]

[ORDER BY field] ...;

● 将某条数据插入到表中:

INSERT INTO DLI_TABLE

VALUES values_row [, values_row ...];

关键字

SELECT对应关键字说明请参考SELECT基本语句。

参数说明

1-50 参数描述

参数 描述

DLI_TABLE 创建的DLI表名称,为插入数据的目的表。

DLI_TEST 为包含待查询数据的表。

field1,field2...,field 表“DLI_TEST”中的列值,需要匹配表“DLI_TABLE”的 列值和类型。

参数 描述

where_condition 查询过滤条件。

num 对查询结果进行限制,num参数仅支持INT类型。

values_row 想要插入到表中的值,列与列之间用逗号分隔。

注意事项

● DLI表必须已经存在。

● DLI表在创建时不需要指定Schema信息,Schema信息将使用RDS表的信息。如果 select子句中选择的字段数量和类型与RDS表的Schema信息不匹配时,系统将报 错。

● 不建议对同一张表并发插入数据,因为有一定概率发生并发冲突,导致插入失 败。

示例

● 查询表“user”中的数据插入表“test”中。

INSERT INTO test SELECT ATTR_EXPR FROM user

WHERE user_name='cyz' LIMIT 3

GROUP BY user_age

● 插入数据“1”到表“test”中

INSERT INTO test VALUES (1);

1.18.3 查询 RDS 表

SELECT命令用于查询RDS表中的数据。

语法格式

SELECT * FROM table_name LIMIT number;

关键字

LIMIT:对查询结果进行限制,number参数仅支持INT类型。

注意事项

所查询的表必须是已经存在的表,否则会出错。

示例

查询表test_ct中的数据。

SELECT * FROM dli_to_rds limit 100;