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

AnalyticDB for MySQL:外部テーブルの作成

最終更新日:Jun 07, 2024

AnalyticDB for MySQL Data Lakehouse Edition (V3.0) を使用すると、CREATE EXTERNAL TABLEステートメントを実行して、Object Storage Service (OSS) 、ApsaraDB RDS for MySQL、ApsaraDB for MongoDB、Tablestore、MaxComputeなどのさまざまなサービスに基づいて外部テーブルを作成できます。

前提条件

使用上の注意

Alibaba Cloudアカウント全体で外部テーブルを作成することはできません。

OSS外部テーブル

重要
  • OSS外部テーブルが作成されるOSSバケットは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターと同じリージョンに存在する必要があります。

  • Hudi外部テーブルは、V3.1.9.2以降のAnalyticDB for MySQLクラスターに対してのみ作成できます。

構文

CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
[PARTITIONED BY (column_name column_type[, ...])]
'、' によって終了するROW FORMAT DELIMITED FIELDS
{TEXTFILE | ORC | PARQUET | JSON | RCFIL | HUDI} として保存
ロケーション 'OSS_ロケーション ';
[TBLPROPERTIES ()
 'type' = 'cow | mor'
 'auto.create.location' = 'true | false') 

パラメーター

パラメーター

必須

説明

table_name (column_name column_type[, ...])

外部テーブルの名前とスキーマ。

テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。

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}

ファイルの保存形式。

TXTおよびCSVファイルの場合、このパラメーターをSTORED AS TEXTFILEに設定します。 PARQUETファイルは、STRUCTデータ型とネストされたデータ型をサポートします。

重要

V3.1.8.0以降のAnalyticDB for MySQLクラスターのみが、STRUCTデータ型のPARQUETファイルをサポートしています。

ロケーション

OSSオブジェクトのパスまたはディレクトリ。

OSSディレクトリを指定する場合は、次のルールに従うことを推奨します。 そうしないと、クエリエラーまたはデータ例外が発生する可能性があります。

  • OSSディレクトリはスラッシュ (/) で終わる必要があります。

  • ディレクトリ内のすべてのオブジェクトは同じ形式で保存する必要があります。

  • ディレクトリ内のすべてのオブジェクトは、同じ数量、順序、およびデータ型のフィールドを使用する必要があります。

パーティション化された外部テーブルを作成するときは、LOCATIONパラメーターをパーティションの上位ディレクトリに設定する必要があります。 たとえば、OSSオブジェクトのパスはoss:// testBucketname/testfolder/p1=2023-06-13/data.csvです。 この場合、LOCATION 'oss:// testBucketname/testfolder/' を指定して、p1パーティションキー列を持つパーティション外部テーブルを作成する必要があります。

重要
  • Hudi外部テーブルを作成するときは、という名前のHudiメタデータファイルが. パーカーOSSパスに存在します。

  • auto.create.locationパラメーターをtrueに設定したとします。 パーティション化された外部テーブルを作成するときに、LOCATIONパラメーターで指定されたOSSパスまたはディレクトリが存在しない場合、OSSパスまたはディレクトリが自動的に作成されます。

タイプ

任意

Hudi外部テーブルのタイプ。 有効な値:

  • COW (デフォルト): 読み取り効率に高い要件があるシナリオに適しています。

  • MOR: 書き込み効率に高い要件があるシナリオに適しています。

重要

このパラメーターは、STORED AS HUDIにのみ指定する必要があります。

auto.create.location

任意

OSSパスまたはディレクトリを自動的に作成するかどうかを指定します。 有効な値:

  • true

  • false (デフォルト)

重要

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

例1: パーティション分割されていない外部テーブルの作成

  • ファイルの保存形式をTEXTFILEに設定します。

    存在しない場合は
    外部テーブルを作成するadb_external_demo.osstest1
    (id int,
    名前文字列,
    年齢int,
    都市文字列)
    '、' によって終了するROW FORMAT DELIMITED FIELDS
    テキストファイルとして保存
    LOCATION 'oss:// testBucketName/osstest/p1=hangzhou/p2=2023-06-13/data.csv '; 
  • ファイルの保存形式をHUDIに設定します。

    存在しない場合は
    外部テーブルを作成するadb_external_demo.osstest2
    (id int,
    名前文字列,
    年齢int,
    都市文字列)
    HUDIとして保存
    ロケーション 'oss:// testBucketName/osstest/test'
    TBLPROPERTIES ('type' = 'cow'); 
    重要

    Hudi外部テーブルを作成すると、_hoodie_commit_time_hoodie_commit_seqno_hoodie_record_key_hoodie_partition_path、および _hoodie_file_name列が自動的に作成されます。

  • ファイルの保存形式をPARQUETに設定します。

    存在しない場合は
    外部テーブルを作成するadb_external_demo.osstest3
    (
    STRUCT < var1:string, var2:int>
    )
    PARQUETとして保存
    ロケーション 'oss:// testBucketName/osstest/Parquet'; 

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

存在しない場合は
外部テーブルを作成するadb_external_demo.osstest4
(id int,
名前文字列,
年齢int,
都市文字列)
PARTITIONED BY (p2文字列)
'、' によって終了するROW FORMAT DELIMITED FIELDS
テキストファイルとして保存
LOCATION 'oss:// testBucketName/osstest/p1=hangzhou/'; 

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

存在しない場合は
外部テーブルを作成するadb_external_demo.osstest5
(id int,
名前文字列,
年齢int,
都市文字列)
PARTITIONED BY (p1文字列、p2文字列)
'、' によって終了するROW FORMAT DELIMITED FIELDS
テキストファイルとして保存
ロケーション 'oss:// testBucketName/osstest/'; 

ApsaraDB RDS for MySQL外部テーブル

重要
  • ApsaraDB RDS for MySQL外部テーブルを作成する場合、AnalyticDB for MySQLコンソールクラスター情報 ページでElastic Network Interface (ENI) を有効にする必要があります。

  • ApsaraDB RDS for MySQLインスタンスは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターと同じ仮想プライベートクラウド (VPC) に存在する必要があります。

構文

CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
エンジン='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[, ...])

外部テーブルの名前とスキーマ。

テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。

エンジン='MYSQL'

外部テーブルのストレージエンジン。 ApsaraDB RDS for MySQLデータを読み書きするには、ストレージエンジンをMYSQLに設定します。

テーブル_プロパティ

外部テーブルのプロパティ。

url

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

tablename

ApsaraDB RDS for MySQL外部テーブルの名前。

ユーザー名

ApsaraDB RDS for MySQLインスタンスのデータベースアカウント。

パスワード

データベースアカウントのパスワードを設定します。

charset

任意

ApsaraDB RDS for MySQLインスタンスのデータベースで使用される文字セット。 有効な値:

  • gbk

  • utf8 (デフォルト)

  • utf8mb4

adb_external_demo.mysqltestが存在しない場合は
外部テーブルを作成します (
id int,
名前varchar(1023) 、年齢int
 ) エンジン='MYSQL'
 TABLE_PROPERTIES = '{
   "url":"jdbc:mysql:// rm-bp1gx6h1tyd04 **** .mysql.rds.aliyuncs.com:3306/test_adb" 、
   "tablename":"person" 、
   "username":"testUserName" 、
   "password":"testUserPassword" 、
   "charset":"utf8"
} '; 

ApsaraDB for MongoDB外部テーブル

重要
  • ApsaraDB for MongoDB外部テーブルを作成する場合、AnalyticDB for MySQLコンソールクラスター情報 ページでENIを有効にする必要があります。

  • ApsaraDB for MongoDBインスタンスは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターと同じVPCに存在する必要があります。

構文

CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
エンジン='モンゴル'
TABLE_PROPERTIES = '{
"mapped_name":"テーブル" 、
  "location":"location" 、
  "username":"user" 、
  "password":"password" 、} '; 

Parameters

パラメーター

必須

説明

table_name (column_name column_type[, ...])

外部テーブルの名前とスキーマ。

テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。

エンジン='MYSQL'

外部テーブルのストレージエンジン。 ApsaraDB for MongoDBデータを読み書きするには、ストレージエンジンをMONGODBに設定します。

テーブル_プロパティ

外部テーブルのプロパティ。

mapped_name

ApsaraDB for MongoDBコレクションの名前。

場所

ApsaraDB for MongoDBインスタンスへの接続に使用されるVPCエンドポイント。 VPCエンドポイントの取得方法については、「」をご参照ください。インスタンス接続の概要

username

ApsaraDB for MongoDBインスタンスへの接続に使用されるデータベースアカウントの名前。 データベースアカウントの作成方法については、「MongoDBデータベースユーザーの権限の管理」をご参照ください。

説明

ApsaraDB for MongoDBは、指定されたデータベースアカウントとパスワードを検証します。 ApsaraDB for MongoDBインスタンスのVPCエンドポイントに含まれるデータベースアカウントを使用する必要があります。 ご不明な点がございましたら、テクニカルサポートにお問い合わせください。

password

データベースアカウントのパスワードを設定します。

外部テーブルの作成adb_external_demo.person (
  id int,
  名前文字列,
  年齢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 Data Lakehouse Edition (V3.0) クラスターが存在するVPCと同じである必要があります。

構文

CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
エンジン='OTS'
TABLE_PROPERTIES = '{
"mapped_name":"table_name" 、"location":"tablestore_vpc_address"
} '; 

パラメーター

パラメーター

必須

説明

table_name (column_name column_type[, ...])

外部テーブルの名前とスキーマ。 テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。

エンジン='OTS'

外部テーブルのストレージエンジン。 Tablestoreデータを読み書きするには、ストレージエンジンをOTSに設定します。

mapped_name

Tablestoreインスタンスのテーブルの名前。 テーブルの名前を表示するには、Tablestoreコンソールにログインし、[インスタンス管理] ページに移動します。

場所

TablestoreインスタンスのVPCエンドポイント。 インスタンスのVPCエンドポイントを表示するには、Tablestoreコンソールにログインし、[インスタンス管理] ページに移動します。

adb_external_demo.otstestが存在しない場合は
外部テーブルを作成します (
id int,
名前文字列,
年齢int
) エンジン='OTS'
TABLE_PROPERTIES = '{
"mapped_name":"person" 、"location":"https:// w0 **** la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
} '; 

MaxCompute外部テーブル

重要

MaxComputeプロジェクトは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターと同じリージョンに存在する必要があります。

構文

CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
エンジン='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[, ...])

外部テーブルの名前とスキーマ。 テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。

重要

定義されたテーブルスキーマには、partition_columnパラメーターを含める必要があります。

エンジン='ODPS'

外部テーブルのストレージエンジン。 MaxComputeデータを読み書きするには、ストレージエンジンをODPSに設定します。

エンドポイント

MaxComputeプロジェクトのエンドポイント。

説明

MaxComputeには、VPCエンドポイントを使用してのみアクセスできます。 詳細については、「エンドポイント」をご参照ください。

accessid

MaxComputeへのアクセスに使用されるAlibaba CloudアカウントまたはRAM (Resource Access Management) ユーザーのAccessKey ID。

AccessKey IDとAccessKeyシークレットの取得方法については、「アカウントと権限」をご参照ください。

accesskey

MaxComputeへのアクセスに使用されるAlibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレット。

AccessKey IDとAccessKeyシークレットの取得方法については、「アカウントと権限」をご参照ください。

partition_column

任意

パーティションキー列。 外部テーブルがパーティションテーブルの場合、このパラメーターを指定する必要があります。

project_name

MaxCompute プロジェクトの名前を設定します。

table_name

MaxComputeテーブルの名前。

adb_external_demo.mctestが存在しない場合は
外部テーブルを作成します (
id int,
名前varchar(1023) 、年齢int,
dtストリング
) エンジン='ODPS'
TABLE_PROPERTIES='{
"accessid":"LTAILd4 ****" 、"endpoint":" http://service.cn-hangzhou.maxcompute.aliyun.com/api " 、"accesskey":"4A5Q7ZVzcYnWMQPysX ****" 、"partition_column":"dt" 、"project_name":"test_adb" 、"table_name":"person"
} '; 

関連ドキュメント