すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:CREATE EXTERNAL TABLE

最終更新日:Feb 07, 2026

AnalyticDB for MySQL では、OSS、RDS MySQL、MongoDB、Tablestore、MaxCompute などの各種外部テーブルを作成できます。

前提条件

  • Enterprise Edition、Basic Edition、または Data Lakehouse Edition の AnalyticDB for MySQL クラスターが作成済みである必要があります。

  • クラスターのカーネルバージョンが 3.1.8.0 以降である必要があります。

    説明

    マイナーバージョンの表示および更新」を行うには、構成情報 セクションに移動し、クラスター情報 ページで AnalyticDB for MySQL コンソール を使用します。

  • 外部データベースを作成しました。詳細については、「CREATE EXTERNAL DATABASE」をご参照ください。

注意事項

クロスアカウントでの外部テーブル作成は、OSS 外部テーブルのみでサポートされています。

OSS 外部テーブル

重要
  • OSS バケットは、AnalyticDB for MySQL クラスターと同じリージョンに配置されている必要があります。

  • Hudi、Iceberg、Paimon の外部テーブルを作成する場合、クラスターのカーネルバージョンは以下の要件を満たす必要があります。

    • Hudi 外部テーブル:クラスターのカーネルバージョンは 3.1.9.2 以降である必要があります。

    • Iceberg 外部テーブル:クラスターのバージョンは 3.2.3.0 以降である必要があります。

    • Paimon 外部テーブル:カーネルバージョンは 3.2.6.1 以降である必要があります。

    マイナーバージョンの確認および更新を行うには、AnalyticDB for MySQL コンソール構成情報セクションにアクセスし、「クラスター情報」ページを表示します。

  • パーティション化された OSS 外部テーブルを作成した後は、外部テーブルのパーティションを同期するために MSCK REPAIR TABLE 文を実行する必要があります。これを実行しないと、外部テーブルからデータをクエリできません。

  • Alibaba Cloud アカウント間で OSS 外部テーブルを作成する場合は、外部データベースを作成する際に必要なパラメーターを追加する必要があります。詳細については、「CREATE EXTERNAL DATABASE」をご参照ください。

構文

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|ORC|PARQUET|JSON|RCFILE|HUDI|ICEBERG|PAIMON}
LOCATION 'OSS_LOCATION';
[TBLPROPERTIES (
 'type' = 'cow|mor'
 'auto.create.location' = 'true|false')
 'metadata_location' = 'METADATA_LOCATION')]

パラメーター

パラメーター

必須

説明

table_name (column_name column_type[, …])

はい

テーブル名およびスキーマです。

テーブルおよび列の命名規則については、「命名規則」をご参照ください。

重要

Paimon 外部テーブルを作成する場合、テーブル名、列名、列のデータの型は Paimon ファイル内の定義と一致している必要があります。テーブルスキーマ(フィールド名または型)が Paimon のものと異なる場合、Paimon 側のテーブルスキーマが優先されます。

PARTITIONED BY (column_name column_type[, …])

いいえ

パーティション化された外部テーブルを作成する場合、このパラメーターを設定してパーティションキー列を指定する必要があります。複数のパーティションキー列を指定すると、マルチレベルのパーティション化テーブルが作成されます。

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

はい

列区切り文字です。任意の記号を指定できますが、ファイル内の区切り文字と一致させる必要があります。本トピックでは、カンマ(,)を例として使用しています。

重要

このパラメーターは、STORED AS TEXTFILE または STORED AS JSON を指定した場合にのみサポートされます。

STORED AS {TEXTFILE|ORC|PARQUET|JSON|RCFILE|HUDI|ICEBERG}

はい

ファイル形式です。

.txt または .csv 形式のファイルの場合は、このパラメーターを STORED AS TEXTFILE に設定します。

PARQUET 形式のファイルは STRUCT データの型およびネストされた STRUCT をサポートします。

重要

STRUCT データの型を含む PARQUET ファイルは、カーネルバージョンが 3.1.8.0 以降のクラスターでのみサポートされます。

LOCATION

はい

OSS ファイルまたはフォルダーのパスです。

フォルダーのパスを指定する場合は、以下のルールに従ってください。ルールに従わないと、クエリが失敗したり、異常な結果が返される可能性があります。

  • フォルダーのパスは、正斜線(/)で終わる必要があります。

  • フォルダー内のすべてのファイルは、同じ形式である必要があります。

  • フォルダー内のすべてのファイルは、フィールド数、フィールド順序、フィールドのデータの型が同一である必要があります。

パーティション化された外部テーブルを作成する場合、LOCATION にはパーティションの親ディレクトリを指定します。たとえば、OSS ファイルのパスが oss://testBucketname/testfolder/p1=2023-06-13/data.csv の場合、パーティションキー列として p1 を使用するパーティション化された外部テーブルを作成するには、LOCATION 'oss://testBucketname/testfolder/' を指定する必要があります。

重要
  • Hudi 外部テーブルを作成する場合、指定されたパスに Hudi メタデータファイル(.hoodies ファイル)が存在することを確認してください。

  • auto.create.location=true を設定した場合、パーティション化された外部テーブルを作成する際に LOCATION で指定されたパスが存在しない場合、OSS フォルダーが自動的に作成されます。

type

いいえ

Hudi 外部テーブルのタイプです。有効な値は以下のとおりです。

  • COW(デフォルト):読み取り効率が重視されるシナリオに適しています。

  • MOR:書き込み効率が重視されるシナリオに適しています。

重要

このパラメーターは、STORED AS HUDI を指定した場合にのみ必要です。

auto.create.location

いいえ

OSS ファイルまたはフォルダーのパスを自動的に作成するかどうかを指定します。有効な値は以下のとおりです。

  • true:はい。

  • false(デフォルト):いいえ。

重要

このパラメーターは、パーティション化された外部テーブルを作成する場合にのみ有効です。

metadata_location

いいえ

Iceberg 外部テーブルのメタデータファイルのパスです。

重要
  • このパラメーターは、STORED AS ICEBERG を指定した場合にのみ必要です。

  • 最新のデータをクエリできるよう、最新のメタデータファイルを使用してください。

例 1:非パーティション化外部テーブルの作成

  • ファイルストレージ形式を TEXTFILE に設定します。

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest1
    (id INT,
    name STRING,
    age INT,
    city STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
    STORED AS TEXTFILE
    LOCATION  'oss://testBucketName/osstest/p1=hangzhou/p2=2023-06-13/data.csv';
  • ファイルストレージ形式を HUDI に設定します。

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest2
    (id INT,
    name STRING,
    age INT,
    city STRING)
    STORED AS HUDI
    LOCATION  'oss://testBucketName/osstest/test'
    TBLPROPERTIES ('type' = 'cow');
  • ファイルストレージ形式を PARQUET に設定します。

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest3
    (
    A STRUCT < var1:STRING, var2:INT >) 
    STORED AS PARQUET 
    LOCATION 'oss://testBucketName/osstest/Parquet';
  • ファイルストレージ形式を ICEBERG に設定します。

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest4
    (
    user_id BIGINT)  
    STORED AS ICEBERG  
    LOCATION 'oss://testBucketName/osstest/no_partition_table/' 
    TBLPROPERTIES (metadata_location='oss://testBucketName/osstest/no_partition_table/metadata/00000-a32d6136-8490-4ad2-ada3-fe2f7204199f.metadata.json');
  • ファイルストレージ形式を PAIMON に設定します。

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest5
    (
    a INT,
    b BIGINT,
    aCa STRING, 
    d VARCHAR(1))
    STORED AS PAIMON 
    LOCATION 'oss://testBucketName/osstest/default.db/t1/';

例 2:パーティション化外部テーブルの作成

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest6
(id int,
name string,
age int,
city string)
PARTITIONED BY (p2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
STORED AS TEXTFILE
LOCATION  'oss://testBucketName/osstest/p1=hangzhou/';

例 3:マルチレベルパーティション化外部テーブルの作成

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest7
(id int,
name string,
age int,
city string)
PARTITIONED BY (p1 string,p2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
STORED AS TEXTFILE
LOCATION  'oss://testBucketName/osstest/';

RDS MySQL 外部テーブル

重要
  • ApsaraDB RDS for MySQL 外部テーブルを作成する前に、AnalyticDB for MySQL コンソールの「クラスター情報」ページで、弾性ネットワークインターフェース(ENI)を有効化する必要があります。ENI の有効化または無効化を行うと、約 2 分間データベース接続が中断される場合があります。この期間中は、読み取りおよび書き込み操作を行えません。ENI の有効化または無効化は、十分にご注意ください。

  • RDS MySQL インスタンスは、AnalyticDB for MySQL クラスターと同じ VPC 内にある必要があります。

構文

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='MYSQL'
TABLE_PROPERTIES='{  
	"url":"mysql_vpc_address",  
	"tablename":"mysql_table_name",  
	"username":"mysql_user_name",  
	"password":"mysql_user_password"
	[,"charset":"{gbk|utf8|utf8mb4}"]
  }';

パラメーター

パラメーター

必須

説明

table_name (column_name column_type[, …])

はい

テーブル名およびスキーマです。

テーブルおよび列の命名規則については、「命名規則」をご参照ください。

ENGINE='MYSQL'

はい

外部テーブルのストレージエンジンです。RDS MySQL からデータを読み取ったり、RDS MySQL にデータを書き込んだりするには、値を MYSQL に設定します。

TABLE_PROPERTIES

はい

外観プロパティです。

url

はい

RDS MySQL インスタンスの内部エンドポイント、ポート番号、およびデータベース名です。RDS インスタンスの内部エンドポイントの取得方法については、「内部およびパブリックエンドポイントとポートの表示または変更」をご参照ください。

tablename

はい

RDS MySQL 内のテーブル名です。

username

はい

RDS MySQL のデータベースアカウントです。

password

はい

RDS MySQL データベースアカウントのパスワードです。

charset

いいえ

MySQL 外部テーブルの文字セットです。有効な値は以下のとおりです。

  • gbk

  • utf8(デフォルト)

  • utf8mb4

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.mysqltest (
	id int,
	name varchar(1023),
	age int
 ) ENGINE = 'MYSQL'
 TABLE_PROPERTIES = '{
   "url":"jdbc:mysql://rm-bp1gx6********.mysql.rds.aliyuncs.com:3306/test_adb",
   "tablename":"person",
   "username":"testUserName",
   "password":"testUserPassword",
   "charset":"utf8"
}';

MongoDB 外部テーブル

重要
  • MongoDB 外部テーブルを作成する前に、AnalyticDB for MySQL コンソールの「クラスター情報」ページで、弾性ネットワークインターフェース(ENI)を有効化する必要があります。ENI の有効化または無効化を行うと、約 2 分間データベース接続が中断される場合があります。この期間中は、読み取りおよび書き込み操作を行えません。ENI の有効化または無効化は、十分にご注意ください。

  • MongoDB インスタンスは、AnalyticDB for MySQL クラスターと同じ VPC 内にある必要があります。

構文

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='MONGODB'
TABLE_PROPERTIES = '{
	"mapped_name":"table",
  "location":"location",
  "username":"user",
  "password":"password",
}';

パラメーター

パラメーター

必須

説明

table_name (column_name column_type[, …])

はい

テーブル名およびスキーマです。

テーブルおよび列の命名規則については、「命名規則」をご参照ください。

ENGINE='MYSQL'

はい

外部テーブルのストレージエンジンです。MongoDB からデータを読み取ったり、MongoDB にデータを書き込んだりするには、値を MONGODB に設定します。

TABLE_PROPERTIES

はい

外観プロパティです。

mapped_name

はい

MongoDB コレクションの名前です。

location

はい

ApsaraDB for MongoDB インスタンスの VPC エンドポイントです。

username

はい

MongoDB インスタンスのデータベースアカウントです。

説明

MongoDB は、ターゲットデータベース内でデータベースアカウントおよびパスワードを検証します。MongoDB インスタンスの VPC エンドポイントで指定されたデータベースのアカウントを使用してください。ご不明な点がある場合は、テクニカルサポートまでお問い合わせください。

password

はい

MongoDB データベースアカウントのパスワードです。

CREATE EXTERNAL TABLE adb_external_demo.mongodbtest (
  id int,
  name string,
  age int
) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
"mapped_name":"person",
"location":"mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb",
"username":"testuser",
"password":"password",
}';

Tablestore 外部テーブル

重要

Tablestore インスタンスが VPC にアタッチされている場合、そのインスタンスは AnalyticDB for MySQL クラスターと同じ VPC 内にある必要があります。

構文

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OTS'
TABLE_PROPERTIES = '{
	"mapped_name":"table_name",
	"location":"tablestore_vpc_address"
}';

パラメーター

パラメーター

必須

説明

table_name (column_name column_type[, …])

はい

テーブル名およびスキーマです。テーブルおよび列の命名規則については、「命名規則」をご参照ください。

ENGINE='OTS’

はい

外部テーブルのストレージエンジンです。Tablestore からデータを読み取ったり、Tablestore にデータを書き込んだりするには、値を OTS に設定します。

mapped_name

はい

Tablestore インスタンス内のテーブル名です。Tablestore コンソールにログインし、「インスタンス管理」ページでテーブル名を確認できます。Tablestore コンソール

location

はい

Tablestore インスタンスの VPC エンドポイントです。Tablestore コンソールにログインし、「インスタンス管理」ページでインスタンスの VPC エンドポイントを確認できます。Tablestore コンソール

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.otstest (
	id int,
	name string,
	age int
) ENGINE = 'OTS' 
TABLE_PROPERTIES = '{
	"mapped_name":"person",
	"location":"https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
}';

MaxCompute 外部テーブル

重要
  • MaxCompute プロジェクトは、AnalyticDB for MySQL クラスターと同じリージョンに配置されている必要があります。

  • MaxCompute 外部テーブルを一括で作成するには、「IMPORT FOREIGN SCHEMA」をご参照ください。

構文

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='ODPS'
TABLE_PROPERTIES='{
	"endpoint":"endpoint",
	"accessid":"accesskey_id",
	"accesskey":"accesskey_secret",
	["partition_column":"partition_column"],
	"project_name":"project_name",
	"table_name":"table_name"
}'; 

パラメーター

パラメーター

必須

説明

table_name (column_name column_type[, …])

はい

テーブル名およびスキーマです。テーブルスキーマには、パーティションキー列を含める必要があります。

table_name および column_name:テーブル名および列名です。テーブルおよび列の命名規則については、「命名規則」をご参照ください。

column_type:MaxCompute の基本データの型および複合データの型(ARRAY、MAP、STRUCT)がサポートされます。

説明

MaxCompute の複合データの型は、バージョン 3.2.1.0 以降でサポートされます。複合データの型の詳細については、「複合データの型」をご参照ください。

AnalyticDB for MySQL クラスターのマイナーバージョンの確認および更新を行うには、AnalyticDB for MySQL コンソールにログインし、「構成情報」セクションにアクセスし、「クラスター情報」ページを表示します。

ENGINE='ODPS'

はい

外部テーブルのストレージエンジンです。MaxCompute からデータを読み取ったり、MaxCompute にデータを書き込んだりするには、値を ODPS に設定します。

endpoint

はい

MaxCompute のエンドポイントです。

説明

MaxCompute へのアクセスは、VPC エンドポイント経由でのみ可能です。MaxCompute エンドポイントの確認方法については、「エンドポイント」をご参照ください。

accessid

はい

MaxCompute へのアクセス権限を持つ Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの AccessKey ID です。

AccessKey ID および AccessKey Secret の取得方法については、「アカウントおよび権限」をご参照ください。

accesskey

はい

MaxCompute へのアクセス権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret です。

AccessKey ID および AccessKey Secret の取得方法については、「アカウントおよび権限」をご参照ください。

partition_column

いいえ

パーティションキー列です。MaxCompute テーブルがパーティション化されたテーブルである場合、このパラメーターは必須です。

project_name

はい

MaxCompute プロジェクト名です。

table_name

はい

MaxCompute テーブル名です。

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.mctest (
	id int,
	name varchar(1023),
	age int,
	dt string
) ENGINE='ODPS'
TABLE_PROPERTIES='{
	"accessid":"LTAI****************",
	"endpoint":"http://service.cn-hangzhou.maxcompute.aliyun.com/api",
	"accesskey":"yourAccessKeySecret",
	"partition_column":"dt",
	"project_name":"test_adb",
	"table_name":"person"
}';

参照