CLONE TABLE ステートメントは、ソーステーブルから宛先テーブルへ、同一リージョン内でデータをコピーします。このステートメントを使用して、同一の Alibaba Cloud アカウント内、または異なるアカウント間で MaxCompute プロジェクト間のデータを移行できます。
クローン後、宛先テーブルのデータを検証します。SELECT を実行してデータを検査するか、DESC を実行してテーブルスキーマとサイズを確認します。
構文
CLONE TABLE <[<src_project_name>.]<src_table_name>> [PARTITION(<pt_spec>), ...]
TO <[<dest_project_name>.]<dest_table_name>> [IF EXISTS [OVERWRITE | IGNORE]];完全な構文リファレンスと追加の例については、「CLONE TABLE」をご参照ください。
制限事項
| 制限事項 | 説明 |
|---|---|
| スキーマの互換性 | 宛先テーブルスキーマは、ソーステーブルスキーマと互換性がある必要があります。 |
| サポートされているテーブルタイプ | パーティションテーブル、非パーティションテーブル、およびクラスターテーブル。 |
| パーティション制限 (既存テーブル) | 宛先テーブルが既に存在する場合、一度にクローンできるパーティションは最大 10,000 個です。 |
| パーティション制限 (新規テーブル) | 無制限です。これにより、クローン操作の原子性が保証されます。 |
| リージョン間 | サポートされていません。 |
| 外部テーブル | サポートされていません。 |
同一 Alibaba Cloud アカウント内でのデータ移行
Alibaba Cloud アカウントの使用
ソースプロジェクトで CLONE TABLE ステートメントを直接実行します。
-- ソースプロジェクトで実行
SET odps.namespace.schema=false;
-- project_analytics から project_reporting へ sales_data テーブルをクローン
CLONE TABLE project_analytics.sales_data TO project_reporting.sales_data IF EXISTS OVERWRITE;RAM ユーザーの使用
RAM ユーザーとして CLONE TABLE を実行する前に、RAM ユーザーが以下の権限を持っていることを確認してください。
| 権限 | スコープ |
|---|---|
SELECT | ソースプロジェクト内のソーステーブル |
CreateTable | 宛先プロジェクト |
CreateInstance | 宛先プロジェクト |
これらの権限を持つ RAM ユーザーは、Alibaba Cloud アカウントと同様に CLONE TABLE ステートメントを実行できます。権限付与の詳細については、「」をご参照ください。
異なる Alibaba Cloud アカウント間でのデータ移行
異なる Alibaba Cloud アカウントが所有するプロジェクト間でデータをクローンするには、宛先プロジェクトのオーナーをソースプロジェクトに追加し、必要な権限を付与します。Alibaba Cloud アカウント (RAM ユーザーではない) のみがアカウント間操作を実行できます。
前提条件
開始する前に、以下を確認してください。
ソースプロジェクトと宛先プロジェクトが同一リージョンにあること
ソースおよび宛先プロジェクトのオーナー両方に対する Alibaba Cloud アカウントの認証情報があること
操作手順
ソースプロジェクトで権限を付与します。 ソースプロジェクトのオーナーアカウントでログインし、以下のコマンドを実行します。アカウントの追加の詳細については、「Alibaba Cloud アカウントの追加 (プロジェクトレベル)」をご参照ください。権限付与の詳細については、「指定されたプロジェクトへのユーザーへの権限付与」をご参照ください。
-- ソースプロジェクト (project_analytics) で実行 USE project_analytics; -- 宛先プロジェクトのオーナーをソースプロジェクトに追加 ADD USER ALIYUN$destination_owner@aliyunid.com; -- プロジェクトレベルの権限を付与 GRANT CreateTable, CreateInstance ON PROJECT project_analytics TO USER ALIYUN$destination_owner@aliyunid.com; -- ソーステーブルへの読み取りアクセスを付与 GRANT Select ON TABLE sales_data TO USER ALIYUN$destination_owner@aliyunid.com;宛先プロジェクトで CLONE TABLE を実行します。 宛先プロジェクトのオーナーアカウントでログインします。宛先プロジェクトのオーナーは既に宛先プロジェクトに対する完全な権限を持っているため、追加の権限付与は不要です。
-- 宛先プロジェクト (project_reporting) で実行 USE project_reporting; -- project_analytics から project_reporting へテーブルをクローン CLONE TABLE project_analytics.sales_data TO project_reporting.sales_data IF EXISTS OVERWRITE;クローンされたデータを検証します。
SELECTを実行してデータを検査するか、DESCを実行してテーブルスキーマとサイズを確認します。予想される出力 (例): テーブルスキーマとサイズも検証できます。-- 行のサンプルを確認 SELECT * FROM sales_data LIMIT 2;+----+------------+--------+ | id | order_date | amount | +----+------------+--------+ | 1 | 2024-01-15 | 299.00 | | 2 | 2024-01-16 | 450.50 | +----+------------+--------+-- テーブル構造とサイズを確認 DESC sales_data;
アカウント間アクセスのクリーンアップ
移行が完了したら、データセキュリティを維持するために、ソースプロジェクトから宛先プロジェクトのオーナーを削除します。詳細については、「Alibaba Cloud アカウントの削除 (プロジェクトレベル)」をご参照ください。