CREATE EXTERNAL DATABASE

云原生数据仓库 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只能访问该路径下的文件。

例如,在testBucketname中存在testperson两个目录。当指定OSS路径为oss://testBucketname/test/时,仅可访问test目录下的文件,person目录下的文件无法访问。

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');