AnalyticDB MySQL湖仓版(3.0)支持创建多种外表,包括:OSS外表、RDS MySQL外表、Tablestore外表、MaxCompute外表。

前提条件

湖仓版(3.0)集群内核版本需为3.1.8.0及以上版本。
说明 如何查看集群内核版本,请参见如何查看实例版本信息。如需升级内核版本,请联系技术支持。

OSS外表

语法

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
({column_name column_type})
[PARTITIONED BY (column_name column_type)]
ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
STORED AS TEXTFILE
LOCATION  'oss://testBucketName/test_db/partition_table_test';
重要 不支持跨账号访问OSS外表。

参数说明

参数说明
table_name表名。表名的命名规则需符合命名约束,详细信息,请参见命名约束
column_name列名。列名的命名规则需符合命名约束,详细信息,请参见命名约束
column_type数据类型。
partitioned by (column_name string)分区列。当创建的外表为分区表时,需要配置该参数。
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','列分隔符。您可以指定任意符号作为列分隔符,例如:半角逗号(,)、半角分号(;)。
STORED AS TEXTFILE指定数据存储类型,取值:
  • TEXTFILE
  • ORC
  • PARQUET
  • JSON
  • RCFILE
LOCATIONOSS数据文件或文件夹的地址。建议文件夹地址以/结尾。
说明

查询OSS数据文件或文件夹的地址时,请登录OSS管理控制台,在Bucket中文件管理页面找到您上传的文件,单击操作列的详情,复制文件名

示例:
  • 文件:oss://testBucketName/adb/person.txt
  • 文件夹:oss://testBucketName/adb_data/。填写文件夹地址时,要求整个文件夹下所有文件的内容都是表中的数据,且所有文件类型相同,文件中数据的字段数量、字段顺序、字段类型相同,否则会导致数据查询失败或结果数据异常。

RDS MySQL外表

语法

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
({column_name column_type})
ENGINE='engine'
TABLE_PROPERTIES='{  
        "url":"jdbc:mysql://mysql-vpc-address:3306/database",  
        "tablename":"table",  
        "username":"mysql-user-name",  
        "password":"mysql-user-password",
        "charset":"utf8"
  }';

参数说明

参数说明
table_name表名。表名的命名规则需符合命名约束,详细信息,请参见命名约束
column_name列名。列名的命名规则需符合命名约束,详细信息,请参见命名约束
column_type数据类型。
ENGINE外表的存储引擎。读写RDS MySQL数据时,取值为MYSQL。
TABLE_PROPERTIES外表属性。
urlRDS MySQL实例的内网地址(即VPC连接地址)和数据库名。如何获取RDS的内网地址,请参见查看或修改内外网地址和端口
tablenameRDS MySQL的表名称。
usernameRDS MySQL数据库的账号。
passwordRDS MySQL数据库账号的密码。
charsetMySQL字符集,取值说明:
  • gbk
  • utf8(默认值)
  • utf8mb4

Tablestore外表

语法

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
({column_name column_type})
ENGINE='OTS'
TABLE_PROPERTIES = '{
"mapped_name":"table_name",
"location":"https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
}';

参数说明

参数说明
table_name表名。表名的命名规则需符合命名约束,详细信息,请参见命名约束
column_name列名。列名的命名规则需符合命名约束,详细信息,请参见命名约束
column_type数据类型。
ENGINE='OTS’外表的存储引擎。读写Tablestore数据时,取值为OTS。
mapped_nameTablestore实例中的表名称。您可以登录表格存储控制台,在实例管理页面查看Tablestore实例的表名称。
locationTablestore实例的VPC访问地址。您可以登录表格存储控制台,在实例管理页面查看实例的VPC访问地址。

MaxCompute外表

语法

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
({column_name column_type})
ENGINE=’ODPS’
TABLE_PROPERTIES='{
"endpoint":"http://service.cn.maxcompute.aliyun-inc.com/api",
"accessid":"L*******FsE",
"accesskey":"CcwF********iWjv",
["partition_column":"column_name",]
"project_name":"project_name",
"table_name":"table"}'; 

参数说明

参数说明
table_name表名。表名的命名规则需符合命名约束,详细信息,请参见命名约束
column_name列名。列名的命名规则需符合命名约束,详细信息,请参见命名约束
column_type数据类型。
ENGINE='ODPS'外表的存储引擎。读写MaxCompute数据时,取值为ODPS。
endpointMaxCompute的EndPoint(域名节点)。
说明 仅支持通过VPC网络Endpoint访问MaxCompute。如何查看MaxCompute Endpoint,请参见Endpoint
accessid阿里云账号或具备MaxCompute访问权限的RAM用户的AccessKey ID。

如何获取AccessKey ID和AccessKey Secret,请参见获取AccessKey信息

accesskey阿里云账号或具备MaxCompute访问权限的RAM用户的AccessKey Secret。

如何获取AccessKey ID和AccessKey Secret,请参见获取AccessKey信息

partition_column分区列。当创建的外表为分区表时,需要配置该参数。
project_nameMaxCompute项目的名称。
table_nameMaxCompute的表名称。

相关文档