云原生数据仓库 AnalyticDB MySQL 版支持通过CREATE EXTERNAL DATABASE
创建外部数据库。本文介绍CREATE EXTERNAL DATABASE
的语法、注意事项以及示例。
前提条件
集群的产品系列为湖仓版。
跨账号创建OSS外部数据库时,需要先创建RAM角色,修改RAM角色的信任策略,并对该角色授予AliyunOSSReadOnlyAccess权限。具体操作,请参见账号授权。
重要如果需要对OSS外表执行INSERT等数据更新操作,需为该RAM角色授予AliyunOSSFullAccess权限。
注意事项
Spark引擎不支持通过
CREATE EXTERNAL DATABASE
创建外部数据库,请使用XIHE引擎。该命令创建的外部数据库中只能通过
CREATE EXTERNAL TABLE
语法创建外表。语法详情,请参见CREATE EXTERNAL TABLE。仅支持跨账号创建OSS外部数据库和外表,不支持创建其他类型的外部数据库和外表(例如:RDS MySQL外表、MongoDB外表等)。
语法
CREATE EXTERNAL DATABASE [IF NOT EXISTS] <db_name>
[WITH DBPROPERTIES(
catalog='OSS',
location = '<oss_location>',
cross_account_accessing_arn= '<ARN>')]
参数
参数 | 是否必填 | 说明 |
db_name | 是 | 数据库名称。 |
catalog | 否 说明 选填参数仅在跨账号创建OSS外部数据库时填写。 | 数据库引擎,固定填写为OSS。 重要 仅支持跨账号创建OSS外部数据库。 |
location | 指定OSS文件或目录所在的路径。 重要 指定路径后,AnalyticDB for MySQL只能访问该路径下的文件。 例如,在 | |
cross_account_accessing_arn | RAM角色的ARN信息。查看方法请参见查看RAM角色。 |
示例
同账号创建外部数据库。
CREATE EXTERNAL DATABASE IF NOT EXISTS adb_demo;
跨账号创建外部数据库。
CREATE EXTERNAL DATABASE IF NOT EXISTS adb_demo1 WITH DBPROPERTIES( catalog='OSS', location = 'oss://testBucketname/test/', cross_account_accessing_arn= 'acs:ram::16274839*****:role/username');