CREATE EXTERNAL DATABASE

更新时间:

云原生数据仓库 AnalyticDB MySQL 版支持通过CREATE EXTERNAL DATABASE创建外部数据库。本文介绍CREATE EXTERNAL DATABASE的语法、注意事项以及示例。

前提条件

  • 集群的产品系列为企业版、基础版或湖仓版

  • 跨账号创建OSS外部数据库时,需要先创建RAM角色,修改RAM角色的信任策略,并对该角色授予AliyunOSSReadOnlyAccess权限。具体操作,请参见跨账号授权

    重要

    如果需要对OSS外表执行INSERT等数据更新操作,需为该RAM角色授予AliyunOSSFullAccess权限。

  • 创建Paimon外库时,集群内核版本需为3.2.4.0及以上。

    说明

    云原生数据仓库AnalyticDB MySQL控制台集群信息页面的配置信息区域,查看和升级内核版本

注意事项

  • Spark引擎不支持通过CREATE EXTERNAL DATABASE创建外部数据库,请使用XIHE引擎。

  • 该命令创建的外部数据库中只能通过CREATE EXTERNAL TABLE语法创建外表。语法详情,请参见CREATE EXTERNAL TABLE

  • 仅支持跨账号创建OSS外部数据库和外表,不支持创建其他类型的外部数据库和外表(例如:RDS MySQL外表、MongoDB外表等)。

  • 创建Paimon外库时,数据库名称需为小写字母,并且需要和Paimon文件名称(*.db)相同。

语法

CREATE EXTERNAL DATABASE [IF NOT EXISTS] <db_name> 
[WITH DBPROPERTIES(
catalog='oss',
adb.paimon.warehouse='<oss_location>',
location = '<oss_location>',
cross_account_accessing_arn= '<ARN>')]

参数

参数

是否必填

说明

db_name

数据库名称。

catalog

说明

仅跨账号创建OSS外库时填写。

数据库引擎。跨账号创建OSS外库时固定填写为OSS

adb.paimon.warehouse

说明

仅创建Paimon外库时填写。

Paimon格式文件存储的根路径,即*.db文件的上级目录路径。

例如:Paimon文件的存储路径为oss://testBucketName/OSS/Paimon/paimon.db/test。则此处的根路径应填写为oss://testBucketName/OSS/Paimon/

location

指定OSS文件或目录所在的路径。

  • Paimon格式文件需填写为*.db文件的目录路径。

    例如:Paimon文件的存储路径为oss://testBucketName/OSS/Paimon/paimon.db/test。则此处的文件路径应填写为oss://testBucketName/OSS/Paimon/paimon.db/

  • 指定路径后,AnalyticDB for MySQL只能访问该路径下的文件。

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

cross_account_accessing_arn

说明

仅跨账号创建OSS外库时填写。

RAM角色的ARN信息。查看方法请参见查看RAM角色

示例

  • 同账号创建外部数据库。

    • CREATE EXTERNAL DATABASE IF NOT EXISTS adb_demo;
    • CREATE EXTERNAL DATABASE IF NOT EXISTS db_external_test
      WITH DBPROPERTIES(
      location = 'oss://testBucketname/person');
  • 跨账号创建外部数据库。

    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');
  • 创建Paimon外部数据库。

    CREATE EXTERNAL DATABASE IF NOT EXISTS paimon_complex
    WITH DBPROPERTIES(
    adb.paimon.warehouse='oss://testBucketName/paimon/',
    location = 'oss://testBucketName/paimon/paimon_complex.db/')