IMPORT FOREIGN SCHEMA を使用して、AnalyticDB for MySQL クラスターに MaxCompute 外部テーブルを一括作成します。
前提条件
開始する前に、以下を確認してください。
V3.2.2.0 以降で実行されている AnalyticDB for MySQL クラスター
マイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソール にログインし、[クラスター情報] ページの [設定情報] セクションに移動します。
クラスターで Elastic Network Interface (ENI) が有効になっていること
重要ENI を有効化するには、AnalyticDB for MySQL コンソール にログインし、クラスターの詳細ページに移動して、左側のナビゲーションウィンドウで [クラスターマネジメント] > [クラスター情報] を選択します。 [ネットワーク情報] セクションで ENI を有効化します。 ENI の有効化または無効化により、約 2 分間データベース接続が中断されます。 この期間中は、読み取りまたは書き込み操作を実行できません。
ご利用の AnalyticDB for MySQL クラスターと同じリージョンに MaxCompute プロジェクトがあること
ご利用のクラスターが存在する virtual private cloud (VPC) の CIDR ブロックが、MaxCompute プロジェクトの IP アドレスホワイトリストに追加されていること
CIDR ブロックを確認するには、AnalyticDB for MySQL コンソールの[クラスター情報]VPC コンソールで該当の VPC を検索します。MaxCompute でのホワイトリストの設定方法については、「IP アドレスホワイトリストの管理」をご参照ください。
クラスター用に外部サーバーが作成されていること — このトピックの「外部サーバーの作成」をご参照ください。
クイックスタート
以下のエンドツーエンドの例は、外部サーバーを作成し、外部テーブルをインポートする完全なワークフローを示しています。
ステップ 1: 外部サーバーの作成
CREATE SERVER maxcompute_server
TYPE = 'ODPS'
SERVER_PROPERTIES = '{
"endpoint":"http://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api",
"accessid":"STS.****************",
"accesskey":"yourAccessKeySecret"
}';ステップ 2: MaxCompute プロジェクトからすべてのテーブルをインポートします。
IMPORT FOREIGN SCHEMA my_project
FROM maxcompute_server
INTO my_adb_schema;これにより、my_project 内のすべてのテーブルに対して AnalyticDB for MySQL に外部テーブルが作成されます。
構文
IMPORT FOREIGN SCHEMA odps_project
[LIMIT TO (table_name[, ...])]
FROM server_name
INTO adb_schema
[OPTIONS (
if_table_exist 'error|ignore|update',
if_type_unsupport 'error|ignore',
table_prefix 'table_prefix',
table_suffix 'table_suffix')]パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
odps_project | はい | MaxCompute プロジェクトの名前。 |
table_name[,...] | いいえ | インポートする MaxCompute テーブル。省略した場合、プロジェクト内のすべてのテーブルがインポートされます。 |
server_name | はい | 外部サーバーの名前。 |
adb_schema | はい | AnalyticDB for MySQL クラスター内のデータベースの名前。 |
if_table_exist | いいえ | 既存のテーブルとの名前の競合を処理する方法。デフォルト: error。以下のオプションを参照してください。 |
if_type_unsupport | いいえ | サポートされていないデータの型を処理する方法。デフォルト: error。以下のオプションを参照してください。 |
table_prefix | いいえ | 各外部テーブル名に追加するプレフィックス。デフォルトでは、外部テーブルは対応する MaxCompute テーブルと同じ名前を使用します。 |
table_suffix | いいえ | 各外部テーブル名に追加するサフィックス。デフォルトでは、外部テーブルは対応する MaxCompute テーブルと同じ名前を使用します。 |
if_table_exist オプション
| 値 | 動作 | 使用する状況 |
|---|---|---|
error (デフォルト) | エラーを報告し、競合するテーブルをリストします。テーブルは作成されません。 | 厳密な制御が必要で、続行する前に競合を確認する必要がある場合。 |
ignore | 名前が競合するテーブルをスキップし、他のすべてのテーブルを作成します。 | 冪等なスクリプトを実行する場合 — 既存のテーブルを上書きすることなく、インポートを安全に再実行できます。 |
update | 名前が競合するテーブルを上書きし、他のすべてのテーブルを作成します。 | MaxCompute からのスキーマ変更を同期する場合 — 既存の外部テーブルは、最新の MaxCompute スキーマと一致するようにリフレッシュされます。 |
if_type_unsupport オプション
| 値 | 動作 |
|---|---|
error (デフォルト) | エラーを報告し、サポートされていないデータの型とそれらを含むテーブルをリストします。 |
ignore | サポートされていないデータの型を含むテーブルをスキップし、他のすべてのテーブルを作成します。 |
例
プロジェクトからすべてのテーブルをインポート
my_project からすべてのテーブルを my_adb_schema データベースにインポートします。
IMPORT FOREIGN SCHEMA my_project
FROM maxcompute_server
INTO my_adb_schema;命名オプションを指定したテーブルのインポート
customer および order テーブルのみをインポートし、外部テーブル名に pre_ プレフィックスと _suf サフィックスを追加します。同じ名前の既存のテーブルを上書きし、サポートされていないデータの型を持つテーブルをスキップします。
IMPORT FOREIGN SCHEMA my_project
LIMIT TO (customer, order)
FROM maxcompute_server
INTO my_adb_schema
OPTIONS (
if_table_exist 'update',
if_type_unsupport 'ignore',
table_prefix 'pre_',
table_suffix '_suf'
);これにより、AnalyticDB for MySQL に pre_customer_suf および pre_order_suf という名前の外部テーブルが作成されます。
外部サーバーの管理
外部サーバーは、MaxCompute プロジェクトの接続構成を保存します。IMPORT FOREIGN SCHEMA を実行する前に作成してください。
外部サーバーの作成
構文
CREATE SERVER <server_name>
TYPE = 'ODPS'
SERVER_PROPERTIES = '{
"endpoint":"<endpoint>",
"accessid":"<accesskey_id>",
"accesskey":"<accesskey_secret>"
}'パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
server_name | はい | 外部サーバーの名前。最大 64 文字で、文字、数字、アンダースコア (_) を含めることができます。文字またはアンダースコアで始まる必要があります。 |
TYPE='ODPS' | はい | 外部サーバータイプ。ODPS に設定します。 |
endpoint | はい | MaxCompute の VPC エンドポイント。VPC エンドポイントのみがサポートされています。エンドポイント値については、「エンドポイント」をご参照ください。 |
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 の取得方法については、「アカウントと権限」をご参照ください。 |
例
CREATE SERVER maxcompute_server
TYPE = 'ODPS'
SERVER_PROPERTIES = '{
"endpoint":"http://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api",
"accessid":"STS.****************",
"accesskey":"yourAccessKeySecret"
}';外部サーバーのクエリ
すべての外部サーバーをリストします。
SHOW SERVER名前で特定の外部サーバーをクエリします。
SHOW SERVER WHERE SERVER_NAME='<server_name>';例:
SHOW SERVER WHERE SERVER_NAME='maxcompute_server';タイプで外部サーバーをクエリします。
SHOW SERVER WHERE SERVER_TYPE='<server_type>';MaxCompute サーバーの場合、server_type を ODPS に設定します。
SHOW SERVER WHERE SERVER_TYPE='ODPS';外部サーバーの名前変更
構文
ALTER SERVER <server_name> RENAME <new_server_name>パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
server_name | はい | 外部サーバーの現在の名前。 |
new_server_name | はい | 外部サーバーの新しい名前。 |
例
ALTER SERVER maxcompute_server RENAME mc_server;外部サーバーの削除
外部サーバーを削除すると、そのサーバーを介して確立された AnalyticDB for MySQL と MaxCompute 間の接続が切断されます。
構文
DROP SERVER <server_name>パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
server_name | はい | 削除する外部サーバーの名前。 |
例
DROP SERVER maxcompute_server;